nginx配置域名自动跳转到带www的域名

本文中的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永久重定向。



声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。

小周博客
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

精彩评论

全部回复 0人评论 7,777人参与

loading