#php #.htaccess #joomla #joomla1.7 #joomla-sef-urls
#php #.htaccess #joomla #joomla1.7 #joomla-sef-urls
Вопрос:
Я пытаюсь разобраться с переписыванием некоторых URL-адресов внутри Joomla! 1.7 с включенными функциями SEF, но, похоже, не могу понять это:
Существует следующий URL-адрес SEF (пункт меню):
website.com/local/amsterdam
Чего я хотел бы, так это следующего:
http://website.com/local/amsterdam/trends (несуществующий) для визуализации http://website.com/local/amsterdam?show=trends при этом все еще отображается первый URL-адрес.
При работе с .htaccess работает следующее (но не отображается SEF URL):
RewriteRule ^local/amsterdam/trends$ index.php?option=com_contentamp;view=articleamp;id=14amp;Itemid=176amp;show=trends [L]
Но это не:
RewriteRule ^local/amsterdam/trends$ local/amsterdam?show=trends [L]
Я надеюсь найти решение без использования идентификатора, чтобы оно динамически отображало правильную страницу для всех городов. Я был бы признателен за любые мысли о том, как сделать это в .htaccess, а также за любые другие решения для достижения этой цели! Заранее спасибо.
Ответ №1:
Хотя я изначально искал решение для перезаписи с модулями, я нашел способ добиться того же, изменив (ядро) Joomla! маршрутизатор.
В строке 47 из includes/router.php после:
$path = substr_replace($path, '', 0, strlen(JURI::base(true)));
Я добавил следующее:
$subpages = array("trends","other"); //Add URL segments you want to reroute
foreach ($subpages as $subpage):
if (strstr($path, "/".$subpage)) :
$path = str_replace("/".$subpage, "", $path);
$vars['show'] = $subpage;
endif;
endforeach;
Теперь при загрузке http://www.website.com/local/amsterdam/trends , этот URL-адрес отображается во время просмотра страницы http://www.website.com/local/amsterdam на самом деле загружается с параметром ?show=trends .
Для меня это более гибкое решение, чем использование mod-rewrite, даже если основной файл изменен. Возможно, вы захотите использовать некоторые условные операторы для запуска этого кода только в определенных условиях. Надеюсь, это поможет.