Существует много информации о перенаправлении всего домена в другой домен, но я не могу найти ответы на вопросы о перенаправлении домена на определенную страницу во втором домене. Вот что я настроил:
<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. Вы должны создать отдельный vhost, один для 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: эти vhosts предназначены только для HTTP (порт 80), поэтому вам, естественно, потребуется повторить перенаправление для HTTPS (порт 443).