Обновление ветки J1.0 на J.15 на практике не так просто как кажется, com_migrator конечно транслирует базу и решает большую часть вопросов. Сами материалы переносятся однозначно, с пунктами меню уже сложнее -
во первых не все компоненты переезжают,
во вторых некоторые пункты меню com_content из j1.0 в принципе не поддерживаются в j1.5: например блог категорий в j1.0 мог объединить сразу несколько категорий, в j1.5 в блоге может быть только одна категория или секция.
Если переносится старый сайт, то возникает вопрос - как быть с ссылками на сайт. С внутренними ссылками можно бороться в ручную - долго муторно, заменой по шаблону в дампе базы, но поменять их все, но что делать со ссылками из вне.
Почему-то не многие интересуются этой темой, хотя со времени появления 1.5 прошло достаточно времени, что бы начать перенос сайтов.
Предлагаю разобраться по шагам.
Какие варианты ссылок у нас есть:
1. ссылки на com_content
2. ссылки на com_другие
а. ссылки с выключенным sef
/index.php?option=com_content&task=blogcategory&id=xx&Itemid=yy&limit=a&limitstart=b
/index.php?option=com_virtuemart&page=shop.browse&category_id=xx&Itemid=yy
b. ссылки с включенным sef
/content/blogcategory/xx/yy/
/component/option,com_virtuemart/page,shop.browse/category_id,xx/Itemid,yy/
Что имеется в арсенале для борьбы с этим:
1. com_migrator + plg_backlink + таблица #__migration_backlinks
2. файл .htaccess
3. php файлы компонентов
1. Плагин BackLinkПлагин BackLink, наверное самый простой вариант. Хоть про него ничего толком не описано ( как например тут -
http://joomlaforum.ru/index.php/topic,71818.0.html), но суть в ясна - он должен при совпадении введенного адреса с одним из пунктов списка (#__migration_backlinks) перести браузер на правильный адрес. У меня com_migrator заполняет только те колонки, которые относятся к j1.0, т.е. правильного адреса он не дает. Вероятно колонку ссылок на сайте j1.5 надо заполнить самому и включить плагин.
Минусы:
1. ссылок может быть очень много, устанешь забивать или пропустишь что-то.
2. плагин увеличивает нагрузку на сервер, добавляя минимум 1 запрос к базе.
3. Как его заставить работать не понятно, (у меня с ходу не получилось

)
2. .htaccessРедактирование .htaccess это немного шаманство. Разобраться с регулярными выражениями - настоящая задача

Но думаю, что это самый перспективный путь - дает минимальную нагрузку на сервер. С ссылками com_content можно расправится почти одним махом.
Конечно не одним, но вот как можно сделать:
Ссылки стандартного SEFДаже com_content имеет несколько вариантов SEF ссылок
/content/blogcategory/1/4/ - блог категории с id=1 и itemid=4
/content/blogcategory/0/29/ - блог нескольких категории и itemid=29
/content/category/1/19/51 - список категории id=19 в секции=1 в меню itemid=51
/content/view/491/29/ - материал id=491 в меню itemid=29
С каждым вариантом надо разбираться по своему. Начну с последнего:
RewriteRule ^content/view/([1-9]{1}|[0-9]{2,5})/([0-9]*)/ /index.php?option=com_content&view=article&id=$1&Itemid=$2 [L,R]
Эта правило перенаправляет браузер с site.ru/content/view/491/29/ на site.ru/index.php?option=com_content&view=article&id=491&Itemid=29
в строке адреса не показывается категория и псевдоним материала, но это не смертельно, главное выводится весь материал. Если сохранился пункт меню, то он станет активным.
RewriteRule ^content/category/([0-9]*)/([1-9]{1}|[0-9]{2,4})/([0-9]*)/ /index.php?option=com_content&view=category&id=$2&Itemid=$3 [L,R]
перенаправляет браузер с site.ru/content/category/1/19/51/ на site.ru/index.php?option=com_content&view=category&id=19&Itemid=51
Показывает список материалов категории.
Критично наличие той же категории с тем же id, а иначе выпадет ошибка, ну и пункт меню тоже хорошо бы иметь тот же
RewriteRule ^content/blogcategory/([1-9]{1}|[0-9]{2,4})/([0-9]*)/ /index.php?option=com_content&view=category&layout=blog&id=$1&Itemid=$2 [L,R]
перенаправляет браузер с site.ru/content/blogcategory/1/29/ на site.ru/index.php?option=com_content&view=category&layout=blog&id=1&Itemid=29
Показывает блог материалов категории.
Критично наличие той же категории с тем же id, а иначе выпадет ошибка, ну и пункт меню с тем же itemid не помешает, но не обязателен. Если же блог собирал материалы с нескольких категорий, то восстановить работоспособность таких ссылок я пока не смог.
Для не SEF ссылок RewriteCond %{QUERY_STRING} option=com_content&task=view&id=([0-9]*)&Itemid=([0-9]*)
RewriteRule index\.php$ /index.php?option=com_content&view=article&id=%1&Itemid=%2 [L,R]
с
http://site/index.php?option=com_content&task=view&id=414&Itemid=51
на
http://site/index.php?option=com_content&view=article&id=414&Itemid=51
просмотр материала
RewriteCond %{QUERY_STRING} option=com_content&task=category§ionid=([0-9]*)&id=([0-9]*)&Itemid=([0-9]*)
RewriteRule index\.php$ /index.php?option=com_content&view=category&id=%2&Itemid=%3 [L,R]
с /index.php?option=com_content&task=category§ionid=1&id=19&Itemid=51
на /index.php?option=com_content&view=category&id=19&Itemid=51
просмотр списка материалов категории
RewriteCond %{QUERY_STRING} option=com_content&task=blogcategory&id=([1-9]{1}|[0-9]{2,4})&Itemid=([0-9]*)
RewriteRule index\.php$ /index.php?option=com_content&view=category&layout=blog&id=%1&Itemid=%2 [L,R]
с /index.php?option=com_content&task=blogcategory&id=17&Itemid=43
на /index.php?option=com_content&view=category&layout=blog&id=17&Itemid=43
просмотр блога материалов категории
Еще раз: поскольку для блога и списка категорий в j1.0 можно задать id=0, то эта ситуация вызовет ошибку в j1.5, впрочем
ошибка будет при вызове любого несуществующего id category.
Минусы этого способа:
перенаправление происходит без использования SEF j1.5
3. Скрипт PHPМожно так: сделать файл redirect.php и в .htaccess добавить перенаправление на него по шаблону, а в файле сделать скрипт, который будет подбирать нужные варианты ссылок и перенаправлять браузер, куда следует.
redirect.php
<?php
$url = isset($_REQUEST['url']) ? $_REQUEST['url'] : '';
// обработка url и подбор по шаблону
header("Location: $url");
...
}
?>
Минусы:
Дополнительная (но меньшая, чем в работе plg_backlink) нагрузка на сервер
Плюсы: можно организовать перенаправление адресов в системе SEF J1.5