通过.htaccess强制添加“www.”

5
我想强制在我的URL中添加“www.”(例如,http://domain.com变成http://www.domain.com)。但是,我不希望它被强制添加到已经有子域名的URL上(例如,http://images.domain.com 不应该变成 http://www.images.domain.com)。我在网上找到了以下代码片段,它可以实现后者:
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

我需要做什么才能让它对我起作用?谢谢。

1个回答

6

简单易懂的规则是:以下规则将www强制转换,但不包括子域名。

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

编辑并粘贴,重新启动Apache。

解释:

RewriteCond %{HTTP_HOST} =name.domain [NC] 只有当有人输入 name.domain(您的域名)时才匹配。

当输入 subdomain.name.domain 时,RewriteCond 是 false 并且不会重定向。你懂了吗? 在你之前发布的规则中,你正在匹配 !(not)^(beginning by)www,而 subdomain.name.domain 满足 RewriteCond,这是你不想要的。 :)


请问一下,“name”和“domain”是什么意思?这些变量在.htaccess中是否已知?还是我需要用实际值替换它们?我希望能够提供一个适用于任何网站的解决方案(无需配置任何内容)。 - StackOverflowNewbie
1
有没有一种方法可以不硬编码域名? - Tom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接