
Есть много информации о перенаправлении целого домена на другой домен, но я не могу найти ответов на вопросы о перенаправлении домена на определенную страницу на втором домене. Вот что я настроил:
<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. Как мне изменить это так, чтобы оно перенаправлялось на определенную страницу?
решение1
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
перенаправлениевсе.
TheCondPatternв этой RewriteCond
директиве необходимо внести изменения, либо:
- Удаление
!
префикса (отрицания). (Хотя завершающий префикс$
все равно вызовет проблемы с полным доменным именем, заканчивающимся на точку.) - ИЛИ, измените на
!domain2\.org\.uk$
Но... поскольку у вас явно есть доступ к конфигурации сервера и вы работаете ввиртуальныйхостcontext, вам действительно не следует использовать 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>
Примечание: эти виртуальные хосты предназначены только для HTTP (порт 80), поэтому вам, естественно, придется повторить это перенаправление для HTTPS (порт 443).