У меня есть сайт Joomla 3.3.6
(отредактированный: 3.5.
), организованный только на 3 уровнях:
- Четыре большие категории (i, ii, iii, iiii)
- Каждый, разделенный на некоторые промежуточные категории (A, B, C,...)
- И, наконец, статьи
- Два языка (en, pt)
URL
после установки Search Engine Friendly URLs
, Use URL rewriting
, Adds Suffix to URL
и multilanguage support
, должен быть в форме:
http://www.example.com/en/bigcatiii/intercatA/articlex.html
Но, как и многие другие, у которых Joomla установлена и запрашивает решение с Joomla-Baby-Version, я получил:
http://www.example.com/en/bigcatiii/666-intercatA/articlex.html
где 666 - это число из ада, означающее без цели идентификатор категории
Теперь, просматривая ответ, я нашел этот ответ:
Edit "components/com_content/router.php"
(You’ll probably have to re-do this step every time you update Joomla.)
Replace the lines 38 and 290 with:
$advanced = $params->get('sef_advanced_link', 1);
and Replace line 426 with
->where($db->quoteName(‘alias’) . ‘ = ‘ . $db->quote($segment));
Ну, во-первых, строка 426 уже похожа на оригинал. Во-вторых, это не делает трюк. Он работает с:
http://www.example.com/en/bigcatiii/intercatA/articlex.html
Но если вы перейдете к:
он нарушит ошибку 404 http://www.example.com/en/bigcatiii/intercatA.html
Кроме того, я заметил, что числа ID отличаются. Хотя весь URL-адрес
http://www.example.com/en/bigcatiii/666-intercatA/articlex.html
Страница одинаковой категории
http://www.example.com/en/bigcatiii/333-intercatA.html
Существует и другое решение, которое лучше звучит, но также не работает, на основе .htaccess
RewriteEngine on
RewriteBase /
RewriteRule (\d+)-([^/]*) $2 [R=301,L]
URLs
отображаются нормально, но страницы не найдены. Было бы намного лучше, если бы мы могли предоставить решение, используя .htaccess вместо изменения ядра Joomla.
Тем не менее, изменение ядра Joomla было бы прекрасным, если бы это другое предложение для googled было действительным.
Copy "components/com_content/router.php" to "/templates/your-template/html"
Если вы переместили router.php
на свой "локальный", вам не нужно будет переделывать все вещи после обновления. (Если, конечно, router.php не обновляется, если вам лучше его снова зеркало.)
Спасибо за ваше время, чтобы решить эту загадку!
Ссылки
1- Изменить/Удалить идентификатор статьи по URL-адресу?
2- Удаление идентификационного номера статьи
3- Как удалить идентификатор статьи в URL-адресе?
4- Удалить идентификатор статьи из url для joomla 3.0
6- Удалить идентификатор статьи из URL-адреса joomla 3
7- Удалить идентификатор статьи из URL-адреса joomla 3
8-.htaccess правило перенаправления
Отредактировано (2016/май/02): NEW Bounty для последней версии 3.5 для Joomla