Nginx如何进行301重定向
时间:2019-11-20 08:54:18 来源:igfitidea点击:
在nginx中,如何重定向到另一个域名。
我们可以使用Http Rewrite 模块, 通过正则表达式(PCRE)更改URI,实现重定向配置。
Rewrite重写指令
Rewrite指令根据正则表达式和替换字符串更改URI。
指令按照配置文件中出现的顺序执行。我们可以在下面的上下文中使用此指令:
- server
- if
- location
nginx 301重写语法
rewrite regex replacement [ flag ]
标志flag可以是以下值之一:
last
完成当前重写指令的处理,并通过从所有可用位置搜索URI上的匹配项重新启动该过程(包括重写)。
break
完成当前重写指令的处理,非重写处理仅在当前位置块内继续。
redirect
返回临时重定向,代码302;当替换行以http://
开头时,使用它
permanent
永久重定向
示例:使用nginx重定向到其他域
在本例中,重定向所有流量,如下所示:
From: | To: |
example.org | example.com |
example.org/foo.html | example.com/foo.html |
example.org/dir1/dir2/bar.cgi | example.com//dir1/dir2/bar.cgi |
example.org/detail.php?arg=value | example.com/detail.php?arg=value |
编辑nginx.conf或者虚拟主机配置
更新server上下文,如下所示:
server { server_name .example.org; rewrite ^ http://example.com$request_uri? permanent; # rest of config, if any goes below ... # }
最后,重新启动/重新加载nginx服务器
# nginx -t && nginx -s reload
如何测试和验证HTTP 301重定向?
使用浏览器或者直接使用curl命令查看:
$ curl -I http://example.org/ $ curl -I http://example.org/foo/bar.html
输出示例:
HTTP/1.1 301 Moved Permanently Location http://example.com/foo/bar.html