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

У меня есть сайт 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]
1
задан 11 January 2019 в 23:29
1 ответ

Итак, чтобы уточнить, вы хотите перенаправить 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, скорее всего, были кэшированы.

1
ответ дан 3 December 2019 в 23:08

Теги

Похожие вопросы