Apache:如果请求的主机是IP地址,请不要应用RewriteRule

时间:2013-05-30 01:25:01

标签: apache mod-rewrite ip

如果请求不是正常的域名而是服务器IP,Apache如何应用RewriteRule?

当前规则(在没有www的情况下只能访问域名):

RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

我已尝试添加RewriteCond %{HTTP_HOST} !^123.321.123.321$ [OR],但似乎无法正常工作。

1 个答案:

答案 0 :(得分:1)

如果您有权访问服务器配置文件,这对我有用(在httpd.conf中设置):

<Location />
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^123.123.123.123$
RewriteRule (.*) http://www.mainsite.example.com/ [L]
</Location>

如果我按IP地址访问该网站,则不会重写。如果我使用(例如)http://mainsite.example.com,则重写地址(包括www.)。 [L](在httpd.conf中使用时)停止在那里重写处理(而不是现在尝试重写新地址)。

在那里你也可以

ServerName www.mainsite.example.com
ServerAlias mainsite.example.com
ServerAlias www.mainsite
ServerAlias mainsite
ServerAlias 123.123.123.123

以便人们可以使用这些地址中的任何一个(第二个和第三个别名允许内部用户省略域名),而不是重写强制或添加www