Jump to content

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


Metroman
 Share

Recommended Posts

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

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

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

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

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

Link to comment
Share on other sites

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

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

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

 

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

s - страница.

 

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

Link to comment
Share on other sites

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

 

В 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 );
}

?>

  • Upvote 1
Link to comment
Share on other sites

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

 

Делам редирект на /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]

  • Upvote 1
Link to comment
Share on other sites

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

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

  • Upvote 1
Link to comment
Share on other sites

Сейчас: 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' ) ) ) ),

Link to comment
Share on other sites

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

Заменить на

 

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

 

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

Link to comment
Share on other sites

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

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

 

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

Edited by Metroman
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...