Назад | Перейти на главную страницу

Mod_Rewrite в htaccess для Joomla

Структура URL для Joomla 1.5 изменилась в версии 2.5.

Раньше было:

http://example.com/index.php?option=com_content&task=view&id=587&Itemid=73

Теперь это:

http://example.com/index.php?option=com_content&view=article&id=587&Itemid=114

*Обратите внимание id и Itemid числа меняются в зависимости от страницы, и хотя все страницы имеют id не у всех есть Itemid в URL.

Хотя мы обновили все ссылки в базе данных, у многих людей все еще есть старая структура ссылок, поэтому мы хотим отредактировать .htaccess файл, поэтому, если кто-то войдет в старую структуру, он перейдет в правильную структуру.

Просто поместите любой URL-адрес, введенный в example.com с участием task=view в URL следует заменить на view=article.

Кто-нибудь знает простой способ сделать это в .htaccess?

Ответ можно найти здесь: http://www.codejoomla.com/joomla-user-guide/old-urls-dont-work-after-upgrading-10-to-17.html

update `jos_content`
set `introtext` = replace(introtext,'task=view','view=article');

update `jos_content`
set `introtext` = replace(introtext,'task=category','view=category');

update `jos_content`
set `introtext` = replace(introtext,'task=blogcategory','view=category&layout=blog');

update `jos_content`
set `introtext` = replace(introtext,'option=com_wrapper&Itemid=','option=com_wrapper&view=wrapper&Itemid=');</pre>

Заменить task=view в строке запроса с view=article используя mod_rewrite в .htaccess, вы можете сделать что-то вроде этого:

RewriteEngine On

RewriteCond %{QUERY_STRING} (^|.*&)task=view(&.*|$)
RewriteRule ^index\.php$ /$0?%1view=article%2 [R=301,L]

Мы фиксируем текст (если есть) до и после фрагмента, который хотим удалить. Затем на них ссылаются с помощью %1 и %2 обратные ссылки в RewriteRule замена строка.

В $0 обратная ссылка просто содержит совпавший URL-путь (т.е. index.php).