Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

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

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

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 как вы и говорите. После миграции ничего не делал.

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

Спасибо! :)

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.