Структура 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
).