17611538698
webmaster@21cto.com

网址前缀:是使用www好,还是不使用好?

资讯 0 3124 2017-05-17 12:01:30

focus-domain.png

在互联网的早期,必须用“www”前缀+域名的方式来访问网站,这三个字符也许是代表了World Wide Web的缩写,在一定意义上达到了统一,且更明显是在同一个域名。

但时至2017年的今天,我们还需要“www”前缀吗?

大家知道,有的互联网公司选择使用前面的“www”来发布网站。比如人们了解Google.com,Facebook.com,Twitter.com和SitePoint.com,甚至Baidu.com、Toutiao.com都是网站。

特别是.com域名让这一点更加明显。

有“www”前缀的案例
'www'前缀尚未被弃用。这样在名字上能够区分域名与其它主机,例如邮件服务或FTP协议。

大部分的网址还是.com或者相关国家/地区的顶级域。最近这些又相继引入了数百种顶级域名选项。如果不太明确是域名还是后缀(例如21cto.club),则添加“www”前缀,这将有助于避免混淆。

没有'www',您必须将域名的根域(非www)的DNS A记录设置为指向到Web服务器的IP。

分享一个小技巧,如果遇到可用性或性能问题,这可能会有点小麻烦,因为A记录是固定的,可以花费一两小时的时间来更新,这个时候我们用CNAME记录来配置“www”子域,这个记录可以立即更新和更改。

我们还需要谨慎处理Cookie和客户端存储。有一些网站,wwww和非www的域的网站登录状态就会不一样,这就需要为非www域设置的Cookie,sessionStorage或localStorage值在所有子域名中共享。比如主21cto.com 设置了10Kb的Cookie数据,那么它将随app.21cto.com的每个请求和响应一起发送,无论该应用是否使用该数据。

另外,“www”前缀对于将文本转换为链接的邮件客户端和字处理软件等应用都还蛮重要的。

“www”的案例
上述我们提到的都是技术问题,但是非www域名至少还是一个问题,除非有更复杂的应用要求。根地址更易读,在较小的浏览器界面,比如手机中输入和调整也更容易。另外这个地址更有可能会加在一个微博或朋友圈中,没有www会显得更简洁,而无需使用短网址处理。

也许很少有人为此感到困惑,特别是有许多人是在浏览器上嵌入的搜索框、网址列表,而不是浏览器地址栏。

这是一件有意思的事。


一些域名通过'www'看起来更好看,更平衡。比如:

www.google.com
www.toutiao.com
www.sina.com.cn
www.baidu.com
www.sohu.com

有一些则没有www,会显得更好:

twitter.com
yahoo.com
wikipedia.org
36kr.com

这些网站有的做了一些转换,强制去掉了www。还有有一些域名有没有“www”都能正常工作:

weibo.com / www.weibo.com
amazon.com / www.amazon.com
dropbox.com / www.dropbox.com

选择适合您的域名,但是需要聪明地配置。

用户同学们,当然有权利加或不加“www”来访问网址,我们都要确保在请求www或非www域名的应用都要正常工作。

这些可以通过服务器端来处理。以上是Apache和Nginx的Web服务器配置关键代码片断。

Apache配置

以下的代码将把非www请求重定向到www版本的URL。把以下这段代码添加到网站根目录中的.htaccess文件中:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

或者,把所有www请求重定向到非www的URL上:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Nginx配置

以下是将www域重定向到非www域。
如果www和非www的域名是在一个server段的,可以一个if判断:
server {
listen 80;
listen [::]:80;
server_name www.youdomain.com youdomain.com;
root /var/www/www.youdomain.com;
index index.php index.html index.htm;

if ($http_host = wwww.youdomain.com) {
rewrite (.*) http://youdomain.com$1;
}
}

当然是放在不同的段会更好维护。如下代码:
server {
listen 80;
listen [::]:80;
server_name www.youdomain.com;
return 301 $scheme://youdomain.com$request_uri;
}
server {
listen 80;
listen [::]:80;
server_name youdomain.com;

# this is the main server block
# insert ALL other config or settings in this server block
}

即使不需要前缀,在在文档里或见邮件中也要有“www”域名。

特别是现在很多网站和应用通过HTTPS提供服务,就更应该小心。虽然大多数的SSL证书对非www和www域均有效,但不能完全保证,这需要和证书颁发机构联系确认。 如果出现有错误的证书,可能需要购买通配符的SSL证书。

最后,需要我们做出最后决定并坚持下去。不要频繁在非www和www网址之间切换!当上面.htaccess或nginx的rewrite发出“301 Moved Permanently”HTTP永久重定向代码,这时浏览器和搜索引擎都相应地更新索引,改变URL路径需要时间,可能会对用户产生访问的小问题。

你们公司的网址是使用www还是删除了www?

评论