这是我需要做的。
将sub1.domain1.co.ukredirect到sub2.domain2.com
将sub2.domain2.comredirect到sub2.domain2.com/sub-folder
这两个工作,但这不:
直接导航到sub1.domain1.co.uk/sub-folder不会redirect到sub2.domain2.com/sub-folder 。
这是我的redirect:
RedirectMatch ^/$ http://sub2.domain2.com/sub-folder RewriteCond %{HTTP_HOST} ^sub1.domain1.co.uk$ [NC] RewriteRule (.*) sub2.domain2.com/$1 [R=301,L]
你有几个潜在的问题,可以解释为什么一个工程,一个不…
您正在混合mod_alias( RedirectMatch )和mod_rewrite( RewriteRule )指令以进行外部redirect。 不同的模块在请求的不同时间执行并独立工作。 这可能会导致冲突混淆。 如果你使用的是mod_rewrite,那么使用mod_rewrite是比较安全的。
你正在使用WordPress。 所以,你有现有的mod_rewrite指令路由请求。 任何外部redirect必须在任何WP路由指令之前 。
RewriteRule (.*) sub2.domain2.com/$1 [R=301,L]
你也错过了从替代scheme(即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]