У меня есть сайт WordPress и форум PHPBB в подкаталоге / forum
.
Я добавил новый домен на сайт в Apache. После добавления домена все загрузилось бы в обоих доменах.
Затем я изменил адрес в файле конфигурации WP, WP теперь автоматически 301 перенаправляет на новый домен (да, это вещь ).
Все идет нормально. / forum /
По-прежнему загружается как новый, так и старый домен.
Как я могу перенаправить этот подкаталог, имея в виду, что и новые, и старые домены добавляются к одной установке сервера? Поэтому, когда вы заходите в любой домен, все попадают в один и тот же файл .htaccess
.
Мне нужно что-то вроде Redirect только / forum /
и только тогда, когда к нему обращается старый домен в новый домен. Возможно ли это?
Я не могу удалить старый домен с сайта, иначе он не разрешится. Думаю, я мог бы создать новый сайт только для перенаправления, но это почему-то кажется ненужным.
РЕДАКТИРОВАТЬ: Моя попытка (не работает)
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/
на new-domain.com/forums/
.
RewriteCond% {HTTP_HOST} ^ old-domain.com RewriteCond% {REQUEST_URI} ^ / forum /(.*)$ RewriteRule ^ (. *) $ Https://new-domain.com/forums/$1 [L, R = 301]
Это приведет к перенаправлению на https://new-domain.com/forums/forums/
, поскольку обратная ссылка $ 1
содержит весь URL-путь (захваченный из шаблон RewriteRule
, а не CondPattern ). Вы можете просто удалить форумов /
из подстановки 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-путь, который начинается с forum /
.
Обратите внимание, что это 302 (временное) перенаправление - меняйте его на 301 (постоянное) только в том случае, если вы уверены, что он работает нормально, чтобы избежать проблем с кешированием.
Вам необходимо очистить свой браузер. cache, так как любые ошибочные 301, скорее всего, были кэшированы.