Apache mod_rewrite:仅当不在localhost中时强制使用www

时间:2012-04-19 15:20:10

标签: apache .htaccess mod-rewrite

我在htaccess中有以下内容强制在URL中使用www:

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

如果不在localhost上,我该如何应用?我可以提出某种条件吗?现在,我得到的是这样的结果:http://www.localhost/ ......

3 个答案:

答案 0 :(得分:58)

RewriteCond已经是你的“if-condition”。只需添加另一个:

RewriteCond %{HTTP_HOST} !=localhost
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

答案 1 :(得分:17)

我添加了所有这些:

RewriteCond %{HTTP_HOST} !=localhost
RewriteCond %{HTTP_HOST} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=::1

答案 2 :(得分:0)

如果您使用的端口不是80(例如localhost:8080),则可能还需要将其添加到正则表达式中:

RewriteCond %{HTTP_HOST} !^localhost(?::\d+)?$ [NC]
RewriteCond %{HTTP_HOST} !^127\.0\.0\.1(?::\d+)?$