Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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]

Опубликовано:
  • Автор

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

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

Допустим тема со старым 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

Опубликовано:
  • Автор

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

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

Опубликовано:
  • Автор

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

Опубликовано:

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

 

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

Опубликовано:
  • Автор

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

Опубликовано:
  • Автор

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

Опубликовано:

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

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

 

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

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

Опубликовано:
  • Автор

Ссылки открывает с PHPSESSID но всё таке шлёт на главную. Видимо не определяет id как вы и говорите. После миграции ничего не делал.

Это всё конечно не критично. Хочется чтоб люди попадали на то что ищут, но подожду индексации.

Спасибо! :)

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

Сейчас на странице 0

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

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.