Apache重定向 - 相同的域不同REQUEST_URI

时间:2014-02-06 19:48:05

标签: apache mod-rewrite redirect

我需要多个RewriteCond用于相同的域,但不同的REQUEST_URI 我需要根据REQUEST_URI重定向到不同的域。

我正在尝试这个没有运气:

RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteCond %{REQUEST_URI} !^/myuir/ [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*)$ / [R=301,L]

RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteCond %{REQUEST_URI} !^/myuniqueuri/ [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*)$ http://example2.com/$! [R=301,L]

RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteCond %{REQUEST_URI} !^/myotheruniqueuri/ [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*)$ http://example3.com/$! [R=301,L]

我认为请求uri条件的[OR]会起作用,但事实并非如此。我也试过没有[OR]而且它没有用!

例如:

如果网址是:

http://example.com/myuniqueuri 

需要重定向到:

http://example2.com

如果网址是:

http://example.com/myotheruniqueuri

需要重定向到:

http://example3.com

其中example2和example3可以是任何但不相同的。

非常感谢任何帮助

由于

1 个答案:

答案 0 :(得分:0)

我认为问题可能在于你的语法。参考是$ 1而不是$!。此外,!使用不正确。这基本上意味着not。喜欢,如果不是这个目录然后等。好吧,它似乎你想匹配目录,然后根据它重定向。试试这段代码,看看它是否适合你。

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/myuir
RewriteRule ^(.*)$ / [R=301,L]

RewriteCond %{REQUEST_URI} ^/myuniqueuri
RewriteRule ^(.*)$ http://example2.com/ [R=301,L]

RewriteCond %{REQUEST_URI} ^/myotheruniqueuri
RewriteRule ^(.*)$ http://example3.com/ [R=301,L]