Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
UserName900

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

Рекомендованные сообщения

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

Вот старая ссылка - 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]

 

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

Поделиться сообщением


Ссылка на сообщение

Возможно только "двойной редирект", так как при включенном чпу обычные ссылки редиректятся на чпу'шные. В таком случае в 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

Поделиться сообщением


Ссылка на сообщение

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

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

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

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение

Блин, вот сколько нюансов о которых и не подумаешь. :( id уже не изменить?

Поделиться сообщением


Ссылка на сообщение

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

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

 

ПС

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

Поделиться сообщением


Ссылка на сообщение

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

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

Поделиться сообщением


Ссылка на сообщение

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

 

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

Поделиться сообщением


Ссылка на сообщение

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

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

Поделиться сообщением


Ссылка на сообщение

К сожалению редирект не случился. :D Всё точно сделал как вы сказали сэр. :)

Поделиться сообщением


Ссылка на сообщение

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

 

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

Никак не придумать ничего?

Поделиться сообщением


Ссылка на сообщение

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

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

 

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

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

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...