我正在寻找一种方法将非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,我一直试图弄清楚其他人是如何解决这个问题的,但没有运气。
答案 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]