htaccess редирект после миграции с Punbb 1.4 на SMF 2.1

Автор APominov, 23 августа 2026, 15:29:57

« назад - далее »

0 Пользователи и 0 гостей просматривают эту тему.

APominov

После конвертации форума с Punbb 1.4.6 на SMF 2.0.19 + апгрейд до 2.1.7 возникли проблемы со старыми ссылками (на сообщения,темы,разделы, профили и т.д.) в сообщениях и из поисковиков.
На simplemachines.org нашел пример редиректа 301 после миграции с phpbb.
Переделал его под Punbb ссылки:
RewriteEngine On
#редирект 301 для разделов/форумов/досок (старая ссылка /viewforum.php?id=1 новая /index.php?board=1.0)[/font]
RewriteCond %{QUERY_STRING} ^id=([0-9]+).*$
RewriteRule ^viewforum.php$ /index.php?board=%1.0 [R=301,L]

#редирект 301 для тем/топиков (старая ссылка /viewtopic.php?id=2 новая /index.php?topic=2.0)
RewriteCond %{QUERY_STRING} ^id=([0-9]+).*$
RewriteRule ^viewtopic.php$ /index.php?topic=%1.0 [R=301,L]

#редирект 301 для сообщений (старая ссылка /viewtopic.php?pid=3 новая /index.php?msg=3)
RewriteCond %{QUERY_STRING} ^pid=([0-9]+).*$
RewriteRule ^viewtopic.php$ /index.php?msg=%1.0 [R=301,L]

#редирект 301 для профилей (старая ссылка /profile.php?id=3 новая /index.php?action=profile;u=3)
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^profile.php$ /index.php?action=profile;u=%1 [R=301,L,NE]

#редирект 301 остальных прямых статических ссылок
RewriteRule ^search.php$ /index.php?action=search [R=301,L]
RewriteRule ^userlist.php$ /index.php?action=mlist [R=301,L]
RewriteRule ^misc.php?section=pun_pm$ /index.php?action=pm [R=301,L]
#RewriteRule ^viewonline.php$ /index.php?action=who [R=301,L]

Надеюсь кому то пригодится.

HSTQ

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

Для форума в корне сайта этот фрагмент можно заменить на:

RewriteCond %{QUERY_STRING} (^|&)section=pun_pm(&|$)
RewriteRule ^misc\.php$ /index.php?action=pm [R=302,L]

Сначала лучше проверить с 302, затем поставить 301, чтобы ошибочный постоянный редирект не закешировался в браузере.

Ещё стоит проверить несколько старых ссылок на темы, сообщения и профили. Прямая подстановка прежнего ID корректна только в том случае, если конвертер сохранил соответствующие идентификаторы. Сам по себе переход без ошибки 404 ещё не означает, что открылась нужная тема.
HSTQ — хостинг, VPS, выделенные серверы и IPv4
VPS и хостинг: 6 месяцев + 6 в подарок
Выбрать VPS • Хостинг • Аренда серверов • Аренда IPv4

APominov

Цитата: HSTQ от 01 октября 2026, 07:06:20В правиле для личных сообщений есть ошибка: RewriteRule проверяет путь, а параметры после знака вопроса нужно проверять через RewriteCond.

Для форума в корне сайта этот фрагмент можно заменить на:

RewriteCond %{QUERY_STRING} (^|&)section=pun_pm(&|$)
RewriteRule ^misc\.php$ /index.php?action=pm [R=302,L]

Сначала лучше проверить с 302, затем поставить 301, чтобы ошибочный постоянный редирект не закешировался в браузере.

Ещё стоит проверить несколько старых ссылок на темы, сообщения и профили. Прямая подстановка прежнего ID корректна только в том случае, если конвертер сохранил соответствующие идентификаторы. Сам по себе переход без ошибки 404 ещё не означает, что открылась нужная тема.
Спасибо. Раздел в личные сообщения редирект по вашим настройкам работает.
Редирект на темы,сообщения и профили я выборочно проверил, переходы все соответствуют старым id.

HSTQ

Ещё проверьте старые ссылки на вторую и следующие страницы темы
HSTQ — хостинг, VPS, выделенные серверы и IPv4
VPS и хостинг: 6 месяцев + 6 в подарок
Выбрать VPS • Хостинг • Аренда серверов • Аренда IPv4

APominov

Цитата: HSTQ от 08 октября 2026, 15:00:12Ещё проверьте старые ссылки на вторую и следующие страницы темы
Редирект идет всегда на первую страницу.  :(
Подскажите, как прописать правило редиректа для других страниц в топике? У меня каждая страница идет с шагом 15