.htaccess-有条件地重定向子文件夹

时间:2018-08-09 20:06:41

标签: .htaccess

我想在.htaccess文件中实现followin:

我有“字典”,它告诉我哪个子文件夹应重定向到哪里,即

domain1.com/a -> domain2.com/x
domain1.com/b -> domain2.com/y

,其他所有内容都应重定向到

domain2.com/z

这应该足够简单,但是我无法弄清楚。

我的代码:

RewriteEngine on

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=proto:https]

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=proto:http]

RewriteCond %{HTTP_HOST}    ^(www\.)?domain1.com/a$ [NC]
RewriteRule ^(.*)$  %{ENV:proto}://domain2.com/x [L]

RewriteCond %{HTTP_HOST}    ^(www\.)?domain1.com/b$ [NC]
RewriteRule ^(.*)$  %{ENV:proto}://domain2.com/y [L]

RewriteCond %{HTTP_HOST}    ^(www\.)?domain1.com$ [NC]
RewriteRule ^(.*)$  %{ENV:proto}://domain2.com/z [L]

1 个答案:

答案 0 :(得分:1)

变量%{HTTP_HOST}仅匹配域,而不请求uri。

您可以使用以下规则:

RewriteEngine on

RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=proto:https]

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=proto:http]

RewriteCond %{HTTP_HOST}    ^(www\.)?domain1\.com$ [NC]
RewriteRule ^a/?$  %{ENV:proto}://domain2.com/x [L,NC,R=301]

RewriteCond %{HTTP_HOST}    ^(www\.)?domain1\.com$ [NC]
RewriteRule ^b/?$  %{ENV:proto}://domain2.com/y [L,NC,R=301]

RewriteCond %{HTTP_HOST}    ^(www\.)?domain1\.com$ [NC]
RewriteRule ^ %{ENV:proto}://domain2.com/z [L,NC,R=301]