有很多关于将整个域重定向到另一个域的信息,但我找不到任何关于将域重定向到第二个域上的特定页面的已回答问题。这是我设置的:
<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>
这会重定向,但只是重定向到 domain2 的默认页面。如何更改它以使其进入特定页面?
这已经完成了您需要的操作并将所有内容重定向到
https://www.domain2.org.uk/specific-page/
- 如RewriteRule
替换中所述。(尽管该RewriteRule
模式不必要地捕获了反向引用。)但是(除非这是示例代码片段中的错字),条件(检查
Host
标头是否以结尾domain1.co.uk
)将导致重定向循环(domain2.org.uk
显然不是domain1.co.uk
,因此始终满足条件)。以下RewriteRule
重定向所有内容。此指令中的CondPattern
RewriteCond
需要通过以下任一方式进行更改:!
(否定)前缀。(尽管尾随$
仍会导致以点结尾的 FQDN 出现问题。)!domain2\.org\.uk$
但是...由于您显然可以访问服务器配置并且正在虚拟主机上下文中工作,因此您不应该真正为此使用 mod_rewrite 。您应该创建一个单独的虚拟主机,一个用于
domain1
,另一个用于domain2
并使用 mod_aliasRedirectMatch
指令代替...不太容易出错,效率更高。例如:
注意:这些虚拟主机仅适用于 HTTP(端口 80),因此您自然需要为 HTTPS(端口 443)重复此重定向。