Jump to content

301 редирект если общих данных в линках не видно? (smf)


UserName900
 Share

Recommended Posts

Возможно ли сделать переадресацию со старых ссылок на новые?

Вот старая ссылка - pristavki.su/index.php?topic=1424.0

Новая ссылка - pristavki.su/index.php/topic/925-proshivka-ps3-versiia-proshivki-411-kak-ponizit-do-355/

Когда переходил с vb на smf у cms в темах было общий id.

Там 301 было сделать относительно не сложно и была логика

RewriteCond %{QUERY_STRING} ^t=([0-9]+).*$
RewriteRule ^showthread.php$ /index.php?topic=%1.0 [R=301,L]
RewriteCond %{QUERY_STRING} ^f=([0-9]+).*$
RewriteRule ^forumdisplay.php$ /index.php?board=%1.0 [R=301,L]

 

Возможно ли в моей ситуации?

Link to comment
Share on other sites

Возможно только "двойной редирект", так как при включенном чпу обычные ссылки редиректятся на чпу'шные. В таком случае в htaccess можно сделать редирект на обычные, а форум сделает реирект с обычных на чпу.

 

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

RewriteCond %{QUERY_STRING} ^topic=(\d+)\.(?:0|msg)
RewriteRule ^index\.php /index.php?showtopic=%1 [R=301,L]
RewriteCond %{QUERY_STRING} ^topic=(\d+)\.(\d+)
RewriteRule ^index\.php /index.php?showtopic=%1&st=%2 [R=301,L]

RewriteCond %{QUERY_STRING} ^board=(\d+)\.0
RewriteRule ^index\.php /index.php?showforum=%1 [R=301,L]
RewriteCond %{QUERY_STRING} ^board=(\d+)\.(\d+)
RewriteRule ^index\.php /index.php?showforum=%1&st=%2 [R=301,L]

RewriteCond %{QUERY_STRING} ^action=profile;u=(\d+)
RewriteRule ^index\.php /index.php?showuser=%1 [R=301,L]

 

или (для тех кто использует чпу)

RewriteCond %{QUERY_STRING} ^topic=(\d+)\.(?:(\d+)|msg)
RewriteRule ^index\.php /index.php?showtopic=%1&st=%2 [R=301,L]

RewriteCond %{QUERY_STRING} ^board=(\d+)\.(\d+)
RewriteRule ^index\.php /index.php?showforum=%1&st=%2 [R=301,L]

RewriteCond %{QUERY_STRING} ^action=profile;u=(\d+)
RewriteRule ^index\.php /index.php?showuser=%1 [R=301,L]

  • Upvote 1
Link to comment
Share on other sites

Спасибо что отозвались!

Редирект происходит но не на те темы.

Допустим тема со старым id 1424, редиректится на новые темы с 1424. А id не соответствует.

Получается сработало на половину :)

Link to comment
Share on other sites

А id не соответствует.

Ну это уже другой вопрос. Когда делали конвертацию темам/форумам/пользователям надо было поставить галочку Empty local data?, чтобы при конвертирования сохранить старые ид.

По идее в бд есть связь старые-новые ид, но для этого нужно уже писать костыль на php.

 

Попробовал второй код. Тоже редирект по id получается

Второй код упрощенная форма первого.

Link to comment
Share on other sites

id уже не изменить?

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

 

ПС

Хотя нет, похоже id все равно не сохраняются, даже если очистить существующие данные в ипб.

Link to comment
Share on other sites

Не. Такого не надо. Пусть будет встрясочка сайту. Мож оно и к лучшему. Конечно упаду но думаю что поднимусь.

siv1987, спасибо огромное. Вы хороший специалист!

Link to comment
Share on other sites

Собственно сам костыль.

 

1. Загрузить файл redir.php в корень форума

2. Добавить в .htaccess (после RewriteEngine On)

 

RewriteCond %{QUERY_STRING} ^topic=(\d+)\.(?:(\d+)|msg)
RewriteRule ^index\.php /redir.php?showtopic=%1&st=%2 [R=301,L]

RewriteCond %{QUERY_STRING} ^board=(\d+)\.(\d+)
RewriteRule ^index\.php /redir.php?showforum=%1&st=%2 [R=301,L]

RewriteCond %{QUERY_STRING} ^action=profile;u=(\d+)
RewriteRule ^index\.php /redir.php?showuser=%1 [R=301,L]

redir.php

  • Upvote 1
Link to comment
Share on other sites

Это сильно загрузит базу? Вообще есть какие либо последствия для SEO или ещё чего? :)

Вы невероятно круты )) Знаете действительно многое.

Link to comment
Share on other sites

Для сео есть - склейка старых урлов с новыми. Не говоря уже о пользе для пользователей, которые перешли по старом ссылкам.

 

Проверял, вроде работало. Возможная причина что не правильно определился ид сессии которой был сконвертирован форум. Так как их там можно создавать несколько приходится ставить условие для поиска конкретной последней завершенной сессии.

Link to comment
Share on other sites

Редирект был не ошибочный а просто на главную. Обычно отображается главная но ссылка по переходу. Мож это что значит.

Link to comment
Share on other sites

Редирект был не ошибочный а просто на главную.

Если редиректит на главную значит - либо не правильно определяется ид сессии конвертации, либо в базе не найдено записи для этого ид. Надеюсь что после завершения конвертации вы сессию не удалили.

 

Файл поправил, но если в бд больше чем одной сессии (Manage Conversions), придется вручную задать ид аппликации в $app = '';

Именно id, который можно узнать из таблицы ibf_conv_apps поле app_id

  • Upvote 1
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...