如果请求不是正常的域名而是服务器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]
,但似乎无法正常工作。
答案 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
。