Форум русской поддержки Joomla!® CMS
22.07.2017, 14:59:04 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Поддержка старых ссылок J1.0 на J1.5

 (Прочитано 20336 раз)
0 Пользователей и 1 Гость смотрят эту тему.
zaboich
Осваиваюсь на форуме
***

Репутация: +11/-0
Offline Offline

Сообщений: 38


« : 29.07.2009, 17:39:22 »

Обновление ветки 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. Как его заставить работать не понятно, (у меня с ходу не получилось Sad )

2. .htaccess
Редактирование .htaccess это немного шаманство. Разобраться с регулярными выражениями - настоящая задача Azn
Но думаю, что это самый перспективный путь - дает минимальную нагрузку на сервер. С ссылками 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&sectionid=([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&sectionid=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
« Последнее редактирование: 29.07.2009, 20:39:47 от zaboich » Записан
 
vaganofff
Осваиваюсь на форуме
***

Репутация: +3/-1
Offline Offline

Пол: Мужской
Сообщений: 125



« Ответ #1 : 29.07.2009, 18:00:11 »

хм. а что если на J1.0.x был установлен артио?
я именно из ссылок не перевожу сайт на ветку 1.5, потому как весь сайт выпадет из индекса, что не есть хорошо.
Записан
zaboich
Осваиваюсь на форуме
***

Репутация: +11/-0
Offline Offline

Сообщений: 38


« Ответ #2 : 29.07.2009, 21:36:39 »

Немного исправил правила .htaccess в первом посте.
Обратите внимание: поскольку категорий и секций с id=0 нет, в правилах добавлено что-то вроде проверки id на не 0

Код:
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]

Код:
([1-9]{1}|[0-9]{2,4})
можно перевести примерно так: одна цифра от 1 до 9 или набор от 2 до 4 цифр от 0 до 9, т.е. адрес
http://site.ru/index.php?option=com_content&task=blogcategory&id=0&Itemid=38 не будет перенаправлен.
В таком случае у меня J1.5 выдает некий блог, по каким-то начальным критериям - вид точно не соответствующий смыслу ссылки, но по крайней мере не пугающий.
Но если на старом сайте была категория, которая впоследствии была удалена, то переход по ссылке на нее выдаст ошибку 404 - Ресурс не найден - это уже намного хуже.
Т.е. при обновлении сайта надо сохранить все значения id: материалов, категорий, секций и меню, тогда можно наедятся, что все ссылки будут транслироваться успешно.

Вариант со сторонними SEF меня к счастью не коснулся Azn наверное тут единственный вариант - писать собственный транслятор - redirect.php
а в файле .htaccess добавить правило
Код:
RewriteRule ^(шаблон_манерной_ссылки)/ /redirect.php?adr=$1 [L]
или так
RewriteCond %{REQUEST_URI} (шаблон_манерной_ссылки)
RewriteRule ^/$ /redirect.php?adr=%1 [L]
Скорее всего одним правилом не обойдешься

Куда вставлять все эти строки:

Все приведенные правила надо вставлять до начала работы стандартных правил J1.5 - у всех них стоит модификатор [L] - что означает последнее правило, а все последующие игнорируются. Т.е. если происходит вызов со старой ссылки, то новые правила срабатывают до начала работы правил J1.5 и происходит редирект, новые ссылки не подходят по шаблону к добавленным правилам и будут обрабатываться страндарнтыми правилами J1.5.
« Последнее редактирование: 25.08.2009, 19:16:17 от zaboich » Записан
evlebedev
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 64



« Ответ #3 : 04.08.2009, 23:10:57 »

Попробовал изменить  .htaccess как описано:
при включеном SEO ошибка 404, при выключеном - выбрасывает на главную.
Есть мысли как бороться?
Записан
evlebedev
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 64



« Ответ #4 : 06.08.2009, 02:15:04 »

В обчем, побдил так:
Включил BackLink, заполнил таблицу migration_backlinks. Оказалось достаточно прописать новые адреса разделов/компонентов, (они же пункты меню) чтобы, практически, все старые урлы пренаправлялись правильно. Сделал около 30 записей и 5500 материалов сразу нашлись!
За такое дело не грех  drink
Записан
Юра
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 56


« Ответ #5 : 16.08.2009, 22:27:01 »

Большое спасибо за подсказки!
Записан
AnnaOl
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 209



« Ответ #6 : 14.11.2009, 21:40:06 »

В обчем, побдил так:
Включил BackLink, заполнил таблицу migration_backlinks. Оказалось достаточно прописать новые адреса разделов/компонентов, (они же пункты меню) чтобы, практически, все старые урлы пренаправлялись правильно. Сделал около 30 записей и 5500 материалов сразу нашлись!
За такое дело не грех  drink

А у Вас до этого ЧПУ был включен?
« Последнее редактирование: 15.11.2009, 19:52:23 от AnnaOl » Записан
evlebedev
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 64



« Ответ #7 : 15.11.2009, 21:39:11 »

На старой лавре был включены встроеные человекопонятные ссылки
Вот картинка jos_migration_backlinks
Записан
AnnaOl
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 209



« Ответ #8 : 15.11.2009, 22:25:03 »

Вопрос: а не будет ли SEO путаницы? Получается, что страница доступна по двум адресам сразу? Причем даже по трем:

1. Новый адрес
2. Адрес плагина migration_backlinks
3. Запрещеные в роботсе  "документ для печати"

Так?
« Последнее редактирование: 15.11.2009, 22:36:03 от AnnaOl » Записан
evlebedev
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 64



« Ответ #9 : 15.11.2009, 22:45:29 »

Для плангина беклинкс таблица jos_migration_backlinks а ваш дампик пытается записаться в таблицу 'palomni_new.Array'  - как я понял, а её нет.
Рабочим будет примерно такой дампик:
Код:
DROP TABLE IF EXISTS `jos_migration_backlinks`;
CREATE TABLE IF NOT EXISTS `jos_migration_backlinks` (
  `itemid` int(11) NOT NULL default '0',
  `name` varchar(100) NOT NULL default '',
  `url` text NOT NULL,
  `sefurl` text NOT NULL,
  `newurl` text NOT NULL,
  PRIMARY KEY  (`itemid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `jos_migration_backlinks`
--

INSERT INTO `jos_migration_backlinks` (`itemid`, `name`, `url`, `sefurl`, `newurl`) VALUES
(0, 'поиск', '', 'component/option,com_search/Itemid,5/', 'поиск'),
(2, 'статьи', '', 'content/blogsection/2/31/', 'статьи'),
(37, 'Случайный анекдот', '', 'content/view/4344/124/', '');
Записан
evlebedev
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 64



« Ответ #10 : 15.11.2009, 22:48:17 »

Вопрос: а не будет ли SEO путаницы? Получается, что страница доступна по двум адресам сразу? Причем даже по трем:

1. Новый адрес
2. Адрес плагина migration_backlinks
3. Запрещеные в роботсе  "документ для печати"

Так?
На старом сайте страница тоже была доступна по крайней мере по двум урлам ЧПУ и не ЧПУ
Записан
AnnaOl
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 209



« Ответ #11 : 15.11.2009, 23:35:22 »

Как к этому относится Яндекс?

Выходит, теперь с этим дампиком мне переезд с 1.0 на 1.5 не страшен? Azn
Записан
evlebedev
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 64



« Ответ #12 : 16.11.2009, 22:09:02 »

Да вроде нормально относится.
Записан
jem777
Практически профи
*******

Репутация: +118/-2
Offline Offline

Сообщений: 1653



« Ответ #13 : 19.01.2010, 06:40:24 »

Я планирую перехать на Joomla 1.5 и про эту проблему оказывается совсем не подумал.
zaboich, спасибо за очень нужную и важную тему и +1!
Записан
AnnaOl
Давно я тут
****

Репутация: +0/-0
Offline Offline

Сообщений: 209



« Ответ #14 : 19.01.2010, 19:02:56 »

Я планирую перехать на Joomla 1.5 и про эту проблему оказывается совсем не подумал.
zaboich, спасибо за очень нужную и важную тему и +1!

Проблем не было.
Записан
algol
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 68


« Ответ #15 : 30.01.2010, 04:33:59 »

2 evlebedev
jos_migration_backlinks работает только при условии что включено ДВА плагина:
1. Система - Поддержка старых расширений (Legacy)
+
2. Система - Поддержка старых ссылок

Или достаточно одного ( Система - Поддержка старых ссылок)?
У меня что то только при двух стало работать ((((
И еще не до конца понятно, в таблице jos_migration_backlinks значение поля  itemid - оно должно совпадать с itemid нового пункат меню или что туда забивать?. У меня эта таблица после переезда просто пустая.

2 zaboich
Взял на вооружение про .htaccess
работает вариант 2
хотелось бы конеш подробней про вариант 3

Сейчас пробую все варианты, в идеале, нужно
site.ru/content/category/3/77/72/ преобразовать в site.ru/news и.д.
т.к. J1.5 эту ссылку видит именно как /news
Записан
jem777
Практически профи
*******

Репутация: +118/-2
Offline Offline

Сообщений: 1653



« Ответ #16 : 15.06.2010, 21:58:05 »

Попробовал плагин бэклинк - что то совсем не туда посылает.
Использовал вариант с .htaccess - то что доктор прописал! Практически весь контент нашелся! Большое спасибо автору топика! drink

Теперь другая проблема. На старом сайте была у меня галерея True Gallery (для Joomla 1.0). На новом соответственно JoomGallery (для Joomla 1.5). Было бы здорово также приспособить редиректы со старой галереи на новую... Roll Eyes

Ссылки старые были такие:

Код:
Главная страница старой галереи - /component/option,com_true/Itemid,112/
Страница категории старой галереи - /component/option,com_true/Itemid,112/func,viewcategory/catid,2/
Страница фотографии старой галереи - /component/option,com_true/Itemid,112/func,detail/catid,2/id,1866/

Ссылки новые стали такими:

Код:
Главная страница новой галереи - /gallery.html
Страница категории новой галереи - /gallery.html?func=viewcategory&catid=2
Страница фотографии новой галереи - /gallery.html?func=detail&id=1867

Кто бы смог подсказать какую конструкцию регулярного выражения прописать, чтобы получить редирект со старой галереи на новую? Уж больно не хочется старые ссылки из индекса терять.

Записан
Don Casper
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 8


« Ответ #17 : 04.11.2010, 11:31:39 »

А возможно как-то сделать такой пример?

Когда заходишь по ссылке:
http://mysite.ru/index.php?view=car&model=1

В строке браузера выдавало:
http://mysite.ru/bmw.html
Записан
Alexey San
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 32


« Ответ #18 : 12.12.2010, 22:26:47 »

у меня после переезда на новый хостинг появились проблемы со ссылками
выглядит так:
http://сайт.ru/doska-obyavleniy.html?page=show_ad&adid=16&catid=3 (урл обьявления)
а если перехожу в это обьявление через модуль с главной страницы то получается так:
http://сайт.ru/component/adsmanager/?page=show_ad&adid=16 (и это обьявление выводится на главной)

подскажите как сделать чтобы перенаправлялось на объявление по первой ссылке
Записан
XYZ
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 48


« Ответ #19 : 30.08.2011, 12:46:25 »

спасибо огромное.
странно, что этого нет в FAQ, особенно в свете того, что в 1.6+ нет плагина backlink.
Записан
dron
Живу я здесь
******

Репутация: +11/-9
Offline Offline

Сообщений: 1119


« Ответ #20 : 05.12.2011, 01:40:15 »

добрый день! долго искал решение и, вроде как, нашел подходящую тему!

была старая Joomla 1.0.15. адреса были вида /content/view/76/90/
мигрировал на 1.5.25. материал ваш прочел, но так и не понял, как сделать на новой Joomla такие же адреса? они давно уже проиндексированы и вполне себе коротенькие.

заранее спасибо!
Записан
dron
Живу я здесь
******

Репутация: +11/-9
Offline Offline

Сообщений: 1119


« Ответ #21 : 08.12.2011, 21:21:33 »

эээээй! люди! ответьте, пожалуйста! готов оплатить работы!
Записан
zaboich
Осваиваюсь на форуме
***

Репутация: +11/-0
Offline Offline

Сообщений: 38


« Ответ #22 : 23.01.2012, 19:53:23 »

была старая Joomla 1.0.15. адреса были вида /content/view/76/90/
мигрировал на 1.5.25. материал ваш прочел, но так и не понял, как сделать на новой Joomla такие же адреса?

Вы не делаете в новых версиях системы старые адреса, а обеспечиваете перенаправление со старых адресов на соответствующие страницы новой системы
Записан
dron
Живу я здесь
******

Репутация: +11/-9
Offline Offline

Сообщений: 1119


« Ответ #23 : 24.01.2012, 10:13:45 »

Вы не делаете в новых версиях системы старые адреса, а обеспечиваете перенаправление со старых адресов на соответствующие страницы новой системы
вот на самом деле, долго не мог понять именно этой простой вещи. Сейчас нашел профи на этом форуме, который может помочь.
Записан
Vjik2010
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 18


« Ответ #24 : 24.06.2012, 16:27:40 »

извините, не туда написал. Как удалить это сообщение?
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet