重定向非www域但不重定向IP

时间:2011-05-24 13:50:32

标签: mod-rewrite apache2 no-www

我正在寻找一种方法将非www域重写为www域,同时不重定向直接IP请求。

我在同一台服务器上有多个站点 - 即:默认(虚拟)主机和一个具有ServerName和多个ServerAlias的虚拟主机,它们运行良好。我更喜欢域名以“www”开头。所以我一起攻击了下面的代码,效果很好:

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

它不处理https,但最大的问题是对服务器IP的请求也会从例如。 “123.45.67.8”至“www.123.45.67.8”。我可以在下面添加一行来解决这个问题:

RewriteCond %{HTTP_HOST} !^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$

......但它有效吗?那IPv6怎么样?

没有mod_rewrite-wiz,我一直试图弄清楚其他人是如何解决这个问题的,但没有运气。

1 个答案:

答案 0 :(得分:1)

那是因为你的情况只是检查它是否以www开头,试试这个(我留下了可选的https代码):

RewriteCond %{HTTP_HOST} ^(yourdomain|thisdomain|thatdomain)\.com
#RewriteCond %{HTTPS} =on
#RewriteRule .* https://www.%{SERVER_NAME}%{REQUEST_URI} [R,L]
RewriteRule .* http://www.%{SERVER_NAME}%{REQUEST_URI} [R,L]