简单去除域名前的 www
以前写过一篇《个人域名前不建议加 www》,如果你看了也有同感的话,不如尝试把你域名前的 www 去掉了吧?
你是 Dreamhost 用户?
如果你是 dreamhost 的用户,要做到这点很简单,只需要进入 Dreamhost 的面板,在相应的域名后的 Web hosting 下选 Edit, 然后在 How do you like the www in your URL? 后选中 Remove “www.” if somebody goes to http://www.domain.com/, 最后点 Change fully hosted settings now 就完成了。今后即使你浏览器中输入的域名前加上 www. 系统也会自动把它去掉的。
Dreamhost 用户看到这里就 End of Story 了,其它的用户接着往下看。
非 Dreamhost 用户
如果你不是 Dreamhost 用户, 而你的主机商也没有类似 Dreamhost 提供的功能的话,你也可以用修改 .htaccess 的方法实现,非常非常的简单。这个方法需要你的主机支持 Apache 的 mod_rewrite 模块,怎么知道你的主机支持不支持呢?如果你在使用 Wordpress, 也很简单,只需看看 Wordpress 的 Permalink 是否被支持,如可以自定义 permalink 的格式,则 mod_rewrite 已打开。
如果你没有用 wordpress, 也有一个通用的方法确定 mod_rewrite 是否打开。在你的空间下,建立一个 test 目录,在该目录中建立任意一个 html 文件,比如 hello.html, 里面随便什么内容都可以。然后在该目录下放一个 .htaccess 文件,里面写成:
RewriteEngine On
然后在浏览器中输入 http://www.yourdomain.tld/test/hello.html, 如果看到 Internal Server Error 的提示,那么你的运气相当不好了,很少有主机商不支持 mod_rewrite, 而你的主机商是其中之一。如果没有看到错误提示,恭喜你,可以继续。
修改 .htaccess 文件
下面以 Wordpress 为例,其它的情况,可以自己参照解决。在你的 Wordpress 目录下通常会有一个 .htaccess 文件,如果没有,那就手动建立一个。如果你设定了 permalink 的话,.htaccess 里面的内容会有如下一坨:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
具体是啥意思咱就甭管它了,只管在 RewriteBase / 这行下面加上:
RewriteCond %{HTTP_HOST} ^www.yourdomain.tld$ [NC]
RewriteRule ^(.*)$ http://yourdomain.tld/$1 [R=301,L]
这样就大功告成了。当然要把 yourdomain.tld 换成你自己的域名。上面两行的意思是把 www.yourdomain.tld 这种形式改写成 yourdomain.tld, 并把访问前者的所有链接永久转向到后者。
我要把我的域名前强制加上 www
如果你实在是坚持要把 www 加在前面,我上面的算是白写了,表示遗憾。但,你可以。只需把上面添加的两行代码改成这样:
RewriteCond %{HTTP_HOST} ^yourdomain.tld$ [NC]
RewriteRule ^(.*)$ http://www.yourdomain.tld/$1 [R=301,L]

