直观讲就是让域名统一指向,我发现很多站点现在都存在以下几方面问题:
- 域名不带www和带www都可以方向到相同的内容;
- 域名用http或https都可访问到相同的内容;
- 域名不带www与带www两者只能一种能正常访问。
那么问题来了,这样的体验有些站长或优化人员会觉得是方便用户,不用输www或输入www都到达同一目标,这样不是更好吗?用户输入的少了,体验更好了。没错,这个理解是对的,但你做的还不够。我们应避免如下问题:
- 不改变用户任何输入体验的前提下,进行服务处理;
- 用户如何输入,服务始终自动补全或响应标准指向;
- 不仅要让输入体验提升,还要让搜索引擎更懂你;
理想的域名输入体验是怎样的?
- 输入www或不输www都转入同一标准规范的url;
- 用户无需理会http与https的概念,后由Nginx拉管处理。
对搜索引擎更为友好的连接规范
在前几年,大家都用http协议,所以不会有协议规范问题,但现在几乎近半的平台都开启了https协议,这样就会造成双协议共存问题,这是一个小细节,我们需要处理。
最好的协议优化是让https完全接管http,做永久重定向。每当搜索引擎对你的站点爬行时,你都会明确告诉它,我的连接只有一种标准,不要把我的权重分散。
Demo配置
# xxx.com # HTTP Server server { listen 80; server_name xxx.com www.xxx.com; return 301 https://$server_name$request_uri; } # HTTPS Server server { listen 443 ssl; server_name xxx.com www.xxx.com; root /var/www/xxx.com; index index.php; ssl_certificate 你的证书路径; ssl_certificate_key 你的证书路径; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; # 如果https是不带www的,则重定向www if ($host = 'xxx.com') { return 301 https://www.xxx.com$request_uri; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location / { try_files $uri $uri/ /index.php?$args; } location ~ .php$ { include fastcgi.conf; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; } location ~* .(js|CSS|png|jpg|jpeg|gif|ico)$ { expires max; log_not_found off; } location ~* .(eot|ttf|woff)$ { add_header Access-Control-Allow-Origin '*'; } location ~ /.ht { deny all; } location ~ /.well-known { allow all; } }
上面这个配置是目前在使用的Nginx配置,完全实现了由https接管http,由www接管不带www,用户不管输入www与否都可以,搜索引擎不管是http还是https访问都会被引导到正确统一的地方。同时处理常见跨域兼容。