Есть сайт на PHP Nuke, хочу переехать на друпал 7. Как это сделать менее болезненно, не потеряв старых страниц которые есть в поисковых индексах?
Вначале хотел поставить два скрипта параллельно но счас понимаю что так не получится. Я так понял в друпале вся адресация идет через относительные ссылки (относительно установленного УРЛ), как сохранить старые ссылки и подружить их с друпалом?
Комментарии
Используйте 301 редиректы.
Хмм.. Вопрос в том что бы оставить сайт на прежнем месте..
Или Вы мне предлагаете разместить новую версию в субдомене?
А я вам разве предлагаю домен сменить ?
Редиректы работают и в пределах 1 домена. И посетителей не потеряете, и все поисковики поймут.
а какого вида "старые" адреса страниц? Чистые?
трахтором
нанять специалиста. за бесплатные советы никто ответственности не несет)
«Редиректы работают и в пределах 1 домена. И посетителей не потеряете, и все поисковики поймут.»
Хорошо более конкретный вопрос:
Есть файл вида index.php в старом скрипте, и такой же файл в друпале и так далее. Как разрешить этот конфликт?
Отдельной директорией, субдоменом или ещё как.
Прошу отвечать только по теме, и только тех кто делал подобное сам или точно знает как это делается.
Тех же кто "примерно представляет как это", прошу воздержаться от комментариев.
судя по вашим словам, вы не совсем представляете что нужно сделать.
мой совет из личного опыта, была неудачная попытка с редиректами на своем сайте, трафик упал на порядок. если у вас сайт не о вашем хобби(и приносит доход), то дешевле нанять человека.
p.s. кстати, все что нужно вам уже подсказали.
шо за маразм?
При переезде на друпал останется только друпал, при чем тут ваш старый сайт?..
Если бы я четко представлял что нужно сделать я бы не задавал здесь вопросов.
Редирект мне никогда не внушал доверия. Да и прописать его на сотнях страницах, удовольствие сомнительное..
Как то наблюдал, переход на новый дизайн у крупных сайтов (типа finam), так вот они в начале давали ссылку с главной страницы, на "новый дизайн". И болталась это ссылка у них около года, и только после этого они осуществляли переход. Так вот насколько я помню там новый дизайн у них размещался в другой папке. Мне лично не совсем понятно зачем так сделано было, если кто в курсе поясните плиз.
бета-тестинг. к сео не имеет никакого отношения
Все статьи переносятся автоматом - для этого пишется скрипт на PHP, который в БД сохраняет старый адрес и добавляет статьи на новый сайт (на друпале) с нужным алиасом.
После переноса два варината:
- отдавать страницы со старым адресом
- делать 301 редирект со старого адреса на новый
Для этого может понадобится написать маленький модуль, это если старый адрес "нечистый". То есть такой: "index.php?type=articles&id=34". А чистые это: "articles/it/tv-box-setup-howto"
Решил сделать так. Свой старый сайт, я просто перенесу в папку Old\. После чего в корневой останется только файл заглушка modules.php, который будет реализовывать редирект на папку Old\.
А где можно посмотреть пример, написания такого модуля. То есть по сути мне просто нужен файл modules.php который бы делал редирект на файл ..\old\modules.php со всем нечистым адресом.
Уговаривать вас вряд ли кто-то будет. Не хотите - не пользуйтесь. Хозяин-барин ))
Dan – спасибо, за внятный ответ.
Склоняюсь к варианту «отдавать страницы со старым адресом». В РНР не силен, поэтому интересует есть ли вариант без «написания маленького модуля»? Например можно ли сделать так что бы параллельно работало сразу два скрипта Друпал и Нюка (на разных базах)? Я вижу проблему в том, что у разных скриптов совпадают некоторые названия файлов и папок. Наверное можно как то, разделить скрипты разместив их в отдельные папки, но нужно как то вынести index.php. Или как правильно это делается?
PS. Если человек знает, о чём речь это видно сразу. Так же как и если он не знает, но очень хочет «умно выглядеть».
Это делается именно как я описал. Два сайта по одному адресу нормально работать не будут.
Заметьте, я не говорю, что такое невозможно сделать, но цена вопроса будет больше, нежели вариант "перенести весь контент на новый сайт и настроить нужным образом адреса".
Спасибо.
Вот код из одного проекта:
/**
* Implementation of hook_menu().
*/
function upgrade_menu() {
$items['posts.php'] = array(
'page callback' => 'upgrade_redirect',
'access arguments' => array('access content'),
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Menu callback
*/
function upgrade_redirect(){
if(isset($_GET['tag'])){
$id = upgrade_get_history('term', $_GET['tag']);
drupal_goto('taxonomy/term/'.$id, null, null, 301);
}elseif(isset($_GET['id'])){
$id = upgrade_get_history('post', $_GET['id']);
drupal_goto('node/'.$id, null, null, 301);
}else{
drupal_goto('articles');
}
}
Этот код обрабатывает пути типа:
posts.php?tag=123 - список постов определённой категории, редирект на taxonomy/term/456
posts.php?id=89 - статья, редирект на node/56
posts.php - список статей, редирект на articles
Функция upgrade_get_history возвращает id объектов в текущей системе по id из старой.
Для вашего случая нужен обработчик modules.php, который будет просто делать редирект на /old/modules.php.....
Спасибо, за код может пригодится.
Но я обошелся редактированием .htaccess
А точнее просто перенес весь старый скрипт, в отдельную папку (old), и исправил .htaccess дописав там 2 строчки
Redirect 301 /modules.php http://mysait.ru/old/modules.php
Теперь думаю можно удалять старый скрипт и ставить Друпал. Может я конечно и не вижу каких то подводных камней, но вроде бы так всё должно работать.
Тут только в .htaccess редирект на свой скрипт и скрипт будет 301 отдавать на новую страницу. Что то типа:
<?php
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=(\d+)(.+)/?$
RewriteRule ^index\.php$ http://site.ru/redirect.php?id=%1 [R=301,L]
?>
в redirect.php
<?php
$old_url = $_GET['id']; // this id we set in mod_rewrite
...
movePage(301,"http://site.ru/$new_url");
?>
Пары соответствий $old_url и $new_url или в массив или в таблицу если их много.
з.ы.
Гугл правильно переклеил ~90% ссылок за неделю (при ~2.5к страниц) тугодумный яндекс 2-ю неделю молчит. до этого яша сайт поменьше за 2 недели переклеил.
Поздравляю, вы решили проблему переноса сайта в другой каталог.
Вопрос - зачем?
Сейчас у вас 301 редирект на старую версию и вы сидите и думаете как сделать новый сайт. Потом вы его сделаете и - снова 301 редирект?
Я предпочту модуль - это проще и быстрее, чем писать несколько костылей (PHP-файл с табличкой, которая, как правило связана с друпал, htaccess для апача, локейшен для nginx и т.д.)
Это - да, а как быть с адресами вида /index.php?option=com_content&view=category&layout=blog&id=1&Itemid=50 ?
Вроде hook_init или hook_bootstrap - не помню какой. Hook_menu уже не нужен - просто смотришь $_GET.