.htaccess 重定向问题

.htaccess 重定向问题

这就是我需要做的。

重定向sub1.domain1.co.uksub2.domain2.com

重定向sub2.domain2.comsub2.domain2.com/sub-folder

这些都有效,但是这个无效:

直接导航至sub1.domain1.co.uk/sub-folder不会重定向到sub2.domain2.com/sub-folder

这是我的重定向:

RedirectMatch ^/$ http://sub2.domain2.com/sub-folder

RewriteCond %{HTTP_HOST} ^sub1.domain1.co.uk$ [NC]
RewriteRule (.*) sub2.domain2.com/$1 [R=301,L]

答案1

您有几个潜在的问题,可以解释为什么一个有效,而另一个无效......

  1. 您正在混合使用 mod_alias ( RedirectMatch) 和 mod_rewrite ( RewriteRule) 指令进行外部重定向。不同的模块在请求期间的不同时间执行并独立工作。这可能会导致令人困惑的冲突。如果您使用 mod_rewrite,那么始终使用 mod_rewrite 更安全。

  2. 您使用的是 WordPress。因此,您有现有的 mod_rewrite 指令来路由请求。任何外部重定向都必须来自任何 WP 路由指令。

RewriteRule (.*) sub2.domain2.com/$1 [R=301,L]

您还缺少替换中的方案(即http://),因此这将被视为相对的并打破。

因此,以下内容应任何现有的 WordPress 指令,位于文件顶部附近.htaccess

# Redirect sub2.domain2.com/ to sub2.domain2.com/sub-folder
RewriteCond %{HTTP_HOST} =sub2.domain2.com [NC]
RewriteRule ^$ http://sub2.domain2.com/sub-folder [R=301,L]

# Redirect sub1.domain1.co.uk/<anything> to sub2.domain2.com/<anything>
RewriteCond %{HTTP_HOST} =sub1.domain1.co.uk [NC]
RewriteRule (.*) http://sub2.domain2.com/$1 [R=301,L]

相关内容