Skip to content

Вернуть старые URL после обновления

Добрый вечер, уважаемые форумчане.

Обновил форум с 2.3.5 до 3.4.2.

В старой версии URL были такие: site.ru/topic23514.html

В новой версии стали: showtopic=23514

Можно каким либо образом вернуть старые URL, либо как сделать доступность страниц по старым URL. Надеюсь на вашу помощь.

Featured Replies

Обратите внимание

"Board url", указанный вами в профиле, некорректен, либо недоступен на данный момент. Пожауйста, заполните его, потому что он скорее всего потребуется при диагностике вашей проблемы.

  • Author

@siv1987, спасибо большое. Осталось решить вопрос со страничками.

Было: topic16785s2461.html (где s2461 как я понял сообщение)

Сейчас: topic16785.html?page=3

Такое вообще реально сделать?

Сейчас: topic16785.html?page=3

Вы неправильно переписали шаблон.

Ссылка должна выглядеть подобным образом: topic16785.html/page-3

 

где s2461 как я понял сообщение

s - страница.

 

Можно или через rewrite на промежуточный скрипт, который составит правильный урл и отправит редирект браузеру, либо сделать через двойной редирект - делается редирект на topic16785.html/page__st__2461, а форум уже редирекнет на topic16785.html/page-3.

  • Author

То есть такой URL у страниц сделать не получится? (topic16785s2461.html)

Первый вариант:

 

В htaccess после RewriteEngine On добавляем

 

RewriteRule ^topic\d+s\d+\.html redir.php [L]

 

В корне создаем файл redir.php со следующим содержанием

 

<?php

$perPage   = 20; //число сообщений на странице
$board_url = 'http://'.$_SERVER['HTTP_HOST'].'/';

if( preg_match( '/(topic\d+)s(\d+)\.html/', $_SERVER['REQUEST_URI'], $out ) )
{
   $topic = $out[1];
   $st  = $out[2];
   $url = $board_url.$topic.'.html';

   if( $st >= $perPage )
   {
       $pag = intval( $st / $perPage ) + 1;
       $url .= '/page-'.$pag;
   }

   header( 'Location: '.$url, true, 301 );
}
else
{
   header( 'Location: '.$board_url, true, 301 );
}

?>

Второй вариант:

 

Делам редирект на /topic%id%.html/page__st__%st%

После чего форум сам сделает редирект на новый вид /topic%id%.html/page-%page%

 

Добавить после RewriteEngine On

 

RewriteRule ^(topic\d+)s(\d+)\.html /$1.html/page__st__$2 [R=301,L]

То есть такой URL у страниц сделать не получится? (topic16785s2461.html)

Нет, такой формат с номером страницы не получиться.

  • Author

@siv1987, премного Вам благодарен, сейчас буду пробовать.

  • Author
Сейчас: topic16785.html?page=3

Вы неправильно переписали шаблон.

Ссылка должна выглядеть подобным образом: topic16785.html/page-3

Можете указать где я ошибся?

'showtopic'     => array( 'app'              => 'forums',
                             'allowRedirect' => 1,
                             'out'           => array( '#showtopic=(.+?)(&|$)#i', 'topic$1.html$2' ),
                             'in'            => array( 'regex'   => "#/topic(\d+?).html#i",
                                                       'matches' => array( array( 'showtopic', '$1' ) ) ) ),

'#showtopic=(.+?)(&|$)#i', 'topic$1.html$2'

Заменить на

 

'#showtopic=(.+?)(\#|&|$)#i', 'topic$1.html$2'

 

Потом обновите кеш ЧПУ в админцентре.

  • Author

Теперь имеем: topic754.html?page=3

В поисковиках: topic754.html/page-164

 

Естественно с поисковиков Not Found. Буду Вам очень признателен за помощь..

Edited by Metroman

Вы должны иметь topic754.html/page-3

  • Author

Вот я хотел бы узнать как мне такого добиться? Извиняюсь за назойливость..

Вот я хотел бы узнать как мне такого добиться? Извиняюсь за назойливость..

Ну так, правку делали? Кеш чпу обновили?

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.