本文中的nginx版本:nginx/1.20.1
打开 nginx.conf 文件中 找到你的站点的 server配置段:
方法一 使用 rewrite指令实现跳转 示例配置如下:
server { listen 80; server_name www.css3er.com css3er.com; #核心实现自动跳转到www域名的代码配置如下 如果访问的域名不是www.css3er.com 则使用rewrite指令 重写url(在这里的意思就是 自动跳转到 http://www.css3er.com 域名) if ($host != 'www.css3er.com' ) { rewrite ^/(.*)$ http://www.css3er.com/$1 permanent; # 通过正则匹配所有的URI后 再去掉开头第一个/(反斜线)。 }
看一下rewrite的语法,rewrite regex replacement [flag]
rewrite: 该指令 是实现URL重写的指令
regex:用于匹配URI的正则表达式
replacement:将regex正则匹配到的内容替换成 replacement
flag有如下值:
last: 本条规则匹配完成后,继续向下匹配新的location URI 规则。(不常用)
break: 本条规则匹配完成即终止,不再匹配后面的任何规则(不常用)。
redirect: 返回302临时重定向,浏览器地址会显示跳转新的URL地址。
permanent: 返回301永久重定向。浏览器地址会显示跳转新的URL地址。
为什么要使用301呢?
301永久重定向可以把搜索引擎的权重全部集中到http://www.css3er.com,对搜索引擎seo比较友好。
方法二 使用 return 指令 示例配置如下:
server { listen 80; server_name www.css3er.com css3er.com; # 使用return指令,通过301状态码和$request_uri参数,直接告诉Nginx这是个301重定向和抓取指定URI。 if ($host != 'www.css3er.com' ) { return 301 http://www.css3er.com$request_uri; # $request_uri是nginx内置的变量 该变量会匹配所有的URI。 }
方法二 这种方式 是性能上最优的,因为rewrite指令有很多写法和规则,执行完所有正则匹配后,Nginx 才会知道这是一个301永久重定向。
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论