1

如果请求不是普通域名而是服务器 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],但似乎不起作用。

4

1 回答 1

1

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

<Location />
RewriteEngine on
RewriteBase /

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

如果我通过 IP 地址访问该站点,它不会被重写。如果我使用 (eg.) 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.

于 2013-05-30T06:56:29.993 回答