Nginx网站开启SSL后将带www的域名和http协议的网址全部301跳转到不带www的https域名的方法
很多朋友给网站开启SSL后,没有完全设置好301跳转,造成搜索引擎收录了各种各样的URL,非常不利于SEO,因为《百度搜索引擎网页质量白皮书》里要求每一个页面只对应一条唯一的URL。本文分享的就是是将http://zhangwenbao.com、http://www.zhangwengbao.com和https://www.zhangwenbao.com三种形式的网址完美跳转到https://zhangwenbao.com的方法。本方法在Nginx 1.10.1下测试成功,也是保哥笔记正在使用的代码分享给大家,一共分为三部分。
第一部分代码是将http://zhangwenbao.com和http://www.zhangwenbao.com跳转到https://zhangwenbao.com,代码如下:
server { listen 80; server_name zhangwenbao.com www.zhangwenbao.com; root /web/www/zhangwenbao_com; return 301 https://zhangwenbao.com$request_uri; if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } # {{{ block/deny ## Block download agents ## if ($http_user_agent ~* LWP::Simple|BBBike|wget) { return 403; } ## Block some robots ## if ($http_user_agent ~* msnbot|scrapbot) { return 403; } ## Deny certain Referers ### if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) ) { return 403; } # }}} location / { index index.php index.html index.htm; } location = /50x.html { root html; } location ~* apple-touch-icon { access_log off; rewrite .* /fav-icon.png last; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; access_log /web/log/nginx/default.access.log dynamic; }
第二部分代码,是开启ssl端口,将https://zhangwenbao.com域名绑443端口:
server { listen 443; server_name zhangwenbao.com; ssl on; root /web/www/zhangwenbao_com; index index.html index.htm; ssl_certificate cert/zhangwenbao_com.pem; ssl_certificate_key cert/zhangwenbao_com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } # {{{ block/deny ## Block download agents ## if ($http_user_agent ~* LWP::Simple|BBBike|wget) { return 403; } ## Block some robots ## if ($http_user_agent ~* msnbot|scrapbot) { return 403; } ## Deny certain Referers ### if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) ) { return 403; } # }}} location / { index index.php index.html index.htm; } location = /50x.html { root html; } location ~* apple-touch-icon { access_log off; rewrite .* /fav-icon.png last; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; access_log /web/log/nginx/default.access.log dynamic; }
第三部分代码是将https://www.zhangwenbao.com也绑定443端口,同时做301跳转到https://zhangwenbao.com:
server { listen 443; server_name www.zhangwenbao.com; return 301 https://zhangwenbao.com$request_uri; ssl on; root /web/www/zhangwenbao_com; index index.html index.htm; ssl_certificate cert/zhangwenbao_com.pem; ssl_certificate_key cert/zhangwenbao_com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } # {{{ block/deny ## Block download agents ## if ($http_user_agent ~* LWP::Simple|BBBike|wget) { return 403; } ## Block some robots ## if ($http_user_agent ~* msnbot|scrapbot) { return 403; } ## Deny certain Referers ### if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) ) { return 403; } # }}} location / { index index.php index.html index.htm; } location = /50x.html { root html; } location ~* apple-touch-icon { access_log off; rewrite .* /fav-icon.png last; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; access_log /web/log/nginx/default.access.log dynamic; }
将上面保哥提供的三个部分的代码全部写入你网站的.conf文件里,保存后重启Nginx即可生效。记得注意修改为你的网站域名、网站目录路径、SSL证书路径和SSL证书文件名。
- 宝塔面板nginx给织梦dedecms目录禁止php脚本执行权限
- http跳转https和https跳转http的两种301重定向代码
- WordPress在Nginx下开启伪静态后台页面404路径缺少wp-admin问题
本文标题:《Nginx网站开启SSL后将带www的域名和http协议的网址全部301跳转到不带www的https域名的方法》
网址:https://zhangwenbao.com/nginx-open-ssl-www-and-http-all-jump-to-non-www-https-domain.html