Intellect Board — cистема управления сайтом

Построение сайта на основе форума

Intellect Board — cистема управления сайтом »   Техническая поддержка версии 2.22 »   Редирект при переносе темы между разделами
RSS

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

Любителям человекочитаемых URL посвящяется...

Текущий рейтинг темы: Нет
Выводить сообщения

<<Назад  Вперед>>Модераторы: aerograf, wsxПечать
 
Dearheart
Почетный участник


Откуда: Нижний Новгород
Всего сообщений: 130
Рейтинг пользователя: 4


Ссылка


Дата регистрации на форуме:
27 дек. 2007
Есть небольшая проблема при переносе темы из одного радела в другой.
При включённых HURL адрес темы формируется как корень_форума/номер_раздела/номер_темы. Если тема перемещается в другой раздел, то поменяется номер раздела, и адрес будет уже другим. Однако в текущей реализации движка, тема будет открываться как по старому адресу так и по новому, что хорошо для юзеров но плохо для поисковых систем, так как у них появляются одинаковые страницы по разным адресам.

Нужно в этом случае ставит редирект 301 со старого адреса на новый - тогда и юзеры будут довольны и поисковики.

Исправления такие: открываем корневой файл index.php, находим в нём такие строки:

// Подгрузка данных о теме, если она передана в параметрах
if (isset($topic) && $topic || isset($topicurl) && $topicurl) {


Перед этими строчками вставляем это:

// Сохраняем номер раздела из запроса, значение $forum потом изменится
$initial_forum_num = $forum;


Это мы запомнили номер раздела который был в запросе, тот номер из которого нужно будет сделать редирект
Теперь немного ниже находим такие строки:

// принудительный редирект на новый вариант написания URL (со ссылок вида ?t=номер\
// или ссылок вида /раздел/номер/ на /раздел/название, если оно есть
  $newurl = "";
  if ($GLOBALS['opt_hurl'] && strtoupper($_SERVER['REQUEST_METHOD'])=="GET") {
    if ((strpos(request_uri(),'/index.php')!==false && $intopic) ||
      (isset($intopic) && $intopic && (($intopic['t_link'] != $topicurl) || ($inforum['f_link'] != $forumurl)))) {


Это и есть уже готовый редирект, нужно только немного его исправить - меняем условие внутри if:

if ((strpos(request_uri(),'/index.php')!==false && $intopic) ||
(isset($intopic) && $intopic && (($intopic['t_link'] != $topicurl) || ($inforum['f_link'] != $forumurl)))) {

На такое условие:

if ((strpos(request_uri(),'/index.php')!==false && $intopic) ||
(isset($intopic) && $intopic && (($intopic['t_link'] != $topicurl) || ($inforum['f_link'] != $forumurl) || ($initial_forum_num != "" && $intopic['t_fid'] != $initial_forum_num)))) {

Это всё. Решение довольно костыльное, но оно работает...

---
Форум для родителей детей с ВПС: http://forum.dearheart.ru
<<Назад  Вперед>>Модераторы: aerograf, wsxПечать
Intellect Board — cистема управления сайтом »   Техническая поддержка версии 2.22 »   Редирект при переносе темы между разделами
RSS

1 посетитель просмотрел эту тему за последние 10 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
Ограничение доступа
не отображаются разделы
Архив версий
Установка стиля на Intellect Board 2.22
Завершилась работа над новой версией 3.00

Самые активные 5 тем RSS


Время выполнения скрипта: 0.0389. Количество выполненных запросов: 17, время выполнения запросов 0.0000
Creative Commons License Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Valid HTML 4.01 Transitional Valid CSS!