Назад | Перейти на главную страницу

Изменено доменное имя, теперь есть 2, как перенаправить на предпочтительный с помощью htaccess?

У меня есть сайт WordPress и форум PHPBB на /forums подкаталог.

Я добавил на сайт новый домен в Apache. После добавления домена все загрузится на обоих доменах.

Затем я изменил адрес в файле WP-config, WP теперь автоматически 301 перенаправляет на новый домен (да, это вещь).

Все идет нормально. /forums/ По-прежнему загружается как новый, так и старый домен. Как я могу перенаправить этот подкаталог, имея в виду, что и новые, и старые домены добавляются в одну и ту же установку сервера? Поэтому, когда вы заходите в любой домен, все попадают в одно и то же .htaccess файл.

Так что мне нужно что-то вроде Redirect только /forums/ и только когда старый домен обращается к новому домену. Это возможно?

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

РЕДАКТИРОВАТЬ: Моя попытка (не работает)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^old-domain.com
RewriteCond %{REQUEST_URI} ^/forums/(.*)$
RewriteRule ^(.*)$ https://new-domain.com/forums/$1 [L,R=301]

Итак, чтобы уточнить, вы хотите перенаправить old-domain.com/forums/<anything> к new-domain.com/forums/<anything>.

RewriteCond %{HTTP_HOST} ^old-domain.com
RewriteCond %{REQUEST_URI} ^/forums/(.*)$
RewriteRule ^(.*)$ https://new-domain.com/forums/$1 [L,R=301]

Это перенаправит на https://new-domain.com/forums/forums/<whatever>, поскольку $1 обратная ссылка содержит весь URL-путь (полученный из RewriteRule шаблон, не CondPattern). Вы можете просто удалить forums/ из RewriteRule заменаОднако предыдущие состояние это проверяет против REQUEST_URI не требуется, и это можно было бы привести в порядок.

Вместо этого попробуйте следующее в верхней части .htaccess перед любыми существующими директивами WordPress:

RewriteCond %{HTTP_HOST} ^old-domain\.com [NC]
RewriteRule ^(forums/.*) https://new-domain.com/$1 [R=302,L]

В дополнительном условии нет необходимости, поскольку URL-путь может совпадать с RewriteRule шаблон вместо этого (более эффективно).

В $1 обратная ссылка содержит полный URL-путь, который начинается с forums/.

Обратите внимание, что это 302 (временное) перенаправление - меняйте его на 301 (постоянное) только тогда, когда вы уверены, что он работает нормально - чтобы избежать проблем с кешированием.

Вам нужно будет очистить кеш браузера, так как любые ошибочные 301, скорее всего, были кэшированы.