如何使用 htaccess 强制 www.在多个域上

How can I use htaccess to force www. on multiple domains

提问人:Andrew G. Johnson 提问时间:3/16/2009 更新时间:12/10/2010 访问量:1999

问:

基本上,我的网络服务器上有一个文件夹,每当我购买新域时,我都会将其分配给只有索引.html和图像文件夹的新域。它基本上只是有我的徽标,并说该域名正在建设中,即将推出。

通常,当我想强制 www.前缀我使用以下代码:

rewritecond %{HTTP_HOST} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

这工作正常,但是我需要明确写出域的名称。我处理了很多域名,所以我需要代码来做到这一点,而不需要知道域名。我试了一下,但老实说,没有人靠近。

.htaccess域名

评论


答:

9赞 Gumbo 3/16/2009 #1

试试这个:

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
2赞 Eso 12/10/2010 #2

这会将“ftp.domain.com”重定向到“www.ftp.domain.com”。可能不是你想要的。

这可能需要一些修改,但我决定自己写,所以这里是:

RewriteCond %{HTTP_HOST} !^%{SERVER_ADDR}$ [NC]
RewriteCond %{HTTP_HOST} !\.dev$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ([^\.]+(\.[^\.0-9]{2,4}){1,2})$ [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=permanent,L]

它应该支持一个词和两个词的顶级域名,通过IP地址访问,以及 DOMAIN.dev 本地开发。适用于具有 4+ 个字符的域。