Mod Rewrite Maintenance页面,使用多个网址

时间:2015-06-17 16:16:56

标签: windows .htaccess redirect isapi-rewrite

我有一个网站,它为单个应用程序使用多个URL。根据网站的网址,您将获得不同的内容。我需要创建一个重写规则,根据用户点击的URL将用户重定向到不同的页面。

例如: 如果用户访问www.foo.bar,则用户将被重定向到www.foo.bar/maintWWW.html 但如果用户访问www.bar.foo,用户将被重定向到www.bar.foo/maintWWW2.html

请记住,由于我们使用相同的应用程序但不同的URL,因此需要对这两个html页面进行不同的命名,以便提供不同的内容。

我设法使用了这个,但它只将两个网址重定向到一个页面,

 RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
 RewriteCond %{REQUEST_URI} !/maintWWW.html$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintWWW.html [R=302,L]

我尝试将%{REQUEST_URI}替换为我想要重定向的网站的实际网址,但它无效。

 RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
 RewriteCond http://www.foo.bar !/maintWWW.html$ [NC]
 RewriteCond http://www.foo.bar !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintWWW.html [R=302,L]

 RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
 RewriteCond http://www.bar.foo !/maintWWW2.html$ [NC]
 RewriteCond http://www.bar.foo !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintWWW2.html [R=302,L]

我究竟如何才能让它发挥作用?我可以包含多个要重定向到同一页面的URL吗?考虑开发和登台URL也会很好。再次举例如下:

 RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
 RewriteCond http://www.foo.bar http://staging.foo.bar http://dev.foo.bar !/maintWWW.html$ [NC]
 RewriteCond http://www.foo.bar !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintWWW.html [R=302,L]

1 个答案:

答案 0 :(得分:2)

您需要检查条件中的HTTP_HOST以检查域名,然后根据该域名进行重定向。

 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^(www\.)?foo\.bar [NC]
 RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
 RewriteCond %{REQUEST_URI} !/maintWWW.html$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintWWW.html [R=302,L]

 RewriteCond %{HTTP_HOST} ^(www\.)?bar\.foo [NC]
 RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
 RewriteCond %{REQUEST_URI} !/maintWWW2.html$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintWWW2.html [R=302,L]

如果您有多个可在设置中使用的主机名或别名,则可以执行此操作。

 RewriteCond %{HTTP_HOST} ^(www|dev|staging)\.foo\.bar [NC]
 RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
 RewriteCond %{REQUEST_URI} !/maintWWW.html$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintWWW.html [R=302,L]