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

Sta*_*bie 33 apache .htaccess mod-rewrite

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

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

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

Laz*_*One 60

RewriteCond已经是你的"if-condition"了.只需添加另一个:

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

  • RewriteCond%{REMOTE_ADDR}!= 127.0.0.1确切地说! (6认同)
  • 或者使用RewriteCond%{REMOTE_ADDR}!127.0.0.1作为替代方案. (4认同)
  • 如果启用了IPv6,localhost可能会解析为`:: 1`,因此您可能需要添加:`RewriteCond%{REMOTE_ADDR}!= :: 1` (3认同)

Kir*_*lly 19

我添加了所有这些:

RewriteCond %{HTTP_HOST} !=localhost
RewriteCond %{HTTP_HOST} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=127.0.0.1
RewriteCond %{REMOTE_ADDR} !=::1
Run Code Online (Sandbox Code Playgroud)


Gus*_*Gus 6

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

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