Редирект после разделения форума

Автор alsak, 26 сентября 2012, 18:59:26

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

alsak

Решил часть материалов старого форум (forum1.ru/smf) перенести на новый (forum2.ru/smf). Перенос осуществил через экспорт/импорт базы и лишний материал на новом форуме удалил. В адресах страниц поменялось только название форума. Старый форум пока не чистил.
Можно ли как-нибудь сделать редирект на новый форум, чтобы не потерять старых пользователей?

На этом форуме нашел статью "редирект после переезда сайта на другой д", но он для редиректа всего форума.

старый форум smf 2.0, новый форум smf 2.0.2.

maestrosite.ru

Какая часть тем переехала? Полностью какой-то из разделов (два-три-пять) или отовсюду по чуть-чуть?
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

alsak

Перенес полностью один раздел форума

maestrosite.ru

Тогда средствами форума при попытке просмотреть что-либо в разделе ставьте перенаправление в Load.php::loadBoard().
Например, там, где добавляются хлебные крошки: if( !empty($board) )
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

Mavn

1. Можно в названии раздела указать ссылку на раздел нового форума, таким образом пользователей будет перенаправлять на нужный раздел.
2. Проблема будет в другом нужно будет прописать редирект на темы на новом форуме, дабы внутренние и внешние ссылки остались рабочими
3. если не сильно много тем можно руками прописать
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

alsak

Цитата: maestrosite.ru от 26 сентября 2012, 20:23:46
Тогда средствами форума при попытке просмотреть что-либо в разделе ставьте перенаправление в Load.php::loadBoard().
Например, там, где добавляются хлебные крошки: if( !empty($board) )
Спасибо за совет. Только вы переоцениваете мои способности. Нельзя ли то, что вы написали расписать поподробнее или хотя бы привести пример (может быть получиться по аналогии).

Цитата: Mavn от 26 сентября 2012, 22:46:42
1. Можно в названии раздела указать ссылку на раздел нового форума, таким образом пользователей будет перенаправлять на нужный раздел.
Вы имеете ввиду включить «Перенаправлять на веб-адрес»? Но эту функцию можно включить только для пустого раздела. Если я удалю все темы в этом разделе на старом форуме, то будут ли перенаправляться ссылки на темы в нем на другой адрес, или это работает только для раздела?

Цитата: Mavn от 26 сентября 2012, 22:46:42
2. Проблема будет в другом нужно будет прописать редирект на темы на новом форуме, дабы внутренние и внешние ссылки остались рабочими
Если я правильно вас понял, то это я уже сделал: сделал экспорт таблицы smf_messages на новом форуме и заменой в блокноте поменял гиперссылки внутренних ссылок.

Цитата: Mavn от 26 сентября 2012, 22:46:42
3. если не сильно много тем можно руками прописать
Более 3000 сообщений в 700 темах.

maestrosite.ru


if( !empty($board) )
{
  if( _идентификатор_раздела_ == $board )
  {
    ob_end_clean();
    header('HTTP/1.1 301 go-go-go!');
    header('Location: http://_адрес_форума_/index.php?' . http_build_query($_GET, '', ';' ) );
    die();
  }
.....

Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

alsak

Для эксперимента был удален раздел http://www.alsak.ru/smf/index.php/board,366.0.html

Отладочный код
if (empty($board))
{
echo $board;
die();
}


выдает 0. Как сделать, чтобы код показал номер удаленного раздела - 366? Без этого редирект сделать не получится.

Отладочный код вставлен в Load.php в строке 740:

if (!empty($topic))
$_GET['board'] = (int) $board;


if (empty($board))
{
echo $board;
die();
}

if (!empty($board))



maestrosite.ru

Восклицательный знак пропустили в вашем условии
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

alsak

Спасибо всем за помощь. Редирект заработал с кодом в Load.php:

     if (empty($board) || empty($topic))
     {
       ob_end_clean();
       header('HTTP/1.1 301 Moved Permanently');
       header('Location: http://domen.ru'.$_SERVER['PHP_SELF']);
       die();
     }

maestrosite.ru

1. $_SERVER['PHP_SELF']  - локальные переменные одного сайта не имеет отношения к путям другого. В данном случае конструкция не имеет смысла
2. С таким Location вы теряете связь тем на старом и новом форуме, теряете все параметры - переадресация всегда идёт на главную нового http://www.alsak.ru/smf/index.php?topic=10610
3. Как вы указываете переадресуемый раздел? Сейчас попытка войти в любой раздел на http://www.alsak.ru/smf/  заканчивается на форме входа на новом, хотя темы из разделов напрямую открываются нормально:
http://www.alsak.ru/smf/index.php/board,26.0.html и http://www.alsak.ru/smf/index.php/topic,2223.msg2493.html
http://www.alsak.ru/smf/index.php/board,13.0.html и http://www.alsak.ru/smf/index.php/topic,2263.msg2753.html
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

alsak

Да код оказался неудачным. Придется, наверное, обходиться без редиректа.
И еще надо найти способ, чтобы при переходе по ссылкам на удаленные страницы появлялась ошибка 404 вместо 200. Мод  apache_err_handler_1.2 почему-то не срабатывает.

Mavn

если уж с кодом ничего не вышло в названии раздела на хтмл ссылку на новый форум можно сделать типа так:
<a href="хттп://линк на раздел нового форума">Название раздела</a>
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

maestrosite.ru

Какие ошибки вызывает код из ответа #6 ?

Вам только свои реальные данные вставить надо:
_идентификатор_раздела_ = 575
_адрес_форума_ = http://web-physics.ru/smf/

Конечно, в этом случае POST-данные переданы не будут, но вам как бы это и не нужно.
Если задаются вопросы по вашей проблеме, значит это нужно вам!
---
Обновления форума, разрешение конфликтов, адаптация модов, исправление ошибок - ваши предложения о сотрудничестве направляйте по адресу smf@maestrosite.ru

alsak

Наконец-то редирект сделали.
Огромное спасибо maestrosite.ru, которые нашел время для консультации и помог все настроить.