У меня есть сайт 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, скорее всего, были кэшированы.