Есть много информации о перенаправлении всего домена в другой, но я не могу найти ответов на вопросы о перенаправлении домена на определенную страницу во втором домене. Вот что я установил:
<VirtualHost *:80>
ServerName www.domain2.org.uk
ServerAlias domain2.org.uk domain1.co.uk www.domain1.co.uk
DocumentRoot /var/www/html
ErrorLog logs/mkt-error_log
CustomLog logs/mkt-access_log common
RewriteEngine On
RewriteCond %{HTTP_HOST} !domain1.co.uk$ [NC]
RewriteRule ^(.*)$ https://www.domain2.org.uk/specific-page/ [L,R=301]
</VirtualHost>
Это перенаправляет, но только на страницу по умолчанию для домена 2. Как я могу изменить это так, чтобы он переходил на конкретную страницу?
RewriteRule ^ (. *) $ https://www.domain2.org.uk/specific-page/ [L, R = 301]
Это уже делает то, что вам нужно, и перенаправляет все на https://www.domain2.org.uk/specific-page/
- как указано в RewriteRule
замена . (Хотя шаблон RewriteRule
излишне захватывает обратную ссылку.)
RewriteCond% {HTTP_HOST}! Domain1.co.uk $ [NC]
ОДНАКО (если это не опечатка в приведенном в качестве примера фрагменте кода) условие (которое проверяет, что заголовок Host
не заканчивается , а не на domain1.co.uk
) приведет к возникновению цикла перенаправления ( domain2.org.uk
, очевидно, не domain1.co.uk
, поэтому условие всегда выполняется). И следующее RewriteRule
перенаправляет все .
CondPattern в этой директиве RewriteCond
необходимо изменить одним из следующих способов:
!
(отрицание). (Хотя конечный $
по-прежнему вызовет проблемы с полным доменным именем, заканчивающимся точкой.) ! Domain2 \ .org \ .uk $
Но .. .. поскольку у вас явно есть доступ к конфигурации сервера и вы работаете в контексте виртуального хоста , вам не следует использовать для этого mod_rewrite. Вы должны создать отдельный виртуальный хост, один для domain1
, другой для domain2
и вместо этого использовать директиву mod_alias RedirectMatch
... менее подвержен ошибкам, более эффективен .
Например:
<VirtualHost *:80>
ServerName domain1.org.uk
ServerAlias www.domain1.org.uk
RedirectMatch 301 ^ https://www.domain2.org.uk/specific-page/
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.org.uk
ServerAlias www.domain2.org.uk
DocumentRoot /var/www/html
ErrorLog logs/mkt-error_log
CustomLog logs/mkt-access_log common
</VirtualHost>
NB: Эти хосты предназначены только для HTTP (порт 80), поэтому вам, естественно, потребуется повторить перенаправление для HTTPS (порт 443).