.htaccessredirect问题

这是我需要做的。

sub1.domain1.co.ukredirectsub2.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] 

你有几个潜在的问题,可以解释为什么一个工程,一个不…

  1. 您正在混合mod_alias( RedirectMatch )和mod_rewrite( RewriteRule )指令以进行外部redirect。 不同的模块在请求的不同时间执行并独立工作。 这可能会导致冲突混淆。 如果你使用的是mod_rewrite,那么使用mod_rewrite是比较安全的。

  2. 你正在使用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]