Nginx:301重定向到域名
时间:2020-01-09 10:37:02 来源:igfitidea点击:
如何使用nginx永久重定向到其他域(例如,将example.org转换为example.com)?您需要使用HttpRewriteModule模块使用正则表达式(PCRE)更改URI,并根据变量重定向和选择配置。
重写指令
该指令根据正则表达式和替换字符串更改URI。
指令按照在配置文件中出现的顺序执行。
您可以在以下上下文中使用此伪指令:
- server
- if
- location
Nginx 301重写语法
语法为:
rewrite regex replacement [ flag ]
标志可以是以下任意一种:
last
完成对当前重写指令的处理,并通过从所有可用位置搜索URI上的匹配项来重新启动过程(包括重写)。break
会完成当前重写指令的处理,并且非重写处理只会在当前位置块内继续。redirect
返回代码为302的临时重定向;如果替换行以http://开头,则使用它permanent
返回带有代码301的永久重定向
示例:使用Nginx重定向到其他域
在此示例中,按如下所示重定向所有流量:
从: | 到: |
---|---|
example.org | example.com |
example.org/foo.html | example.com/foo.html |
example.org/show.php?arg = value | example.com/show.php?arg = value |
example.org/dir1/dir2/bar.cgi | example.com//dir1/dir2/bar.cgi |
编辑nginx.conf或您的虚拟主机配置,并更新服务器上下文,如下所示:
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 Server: nginx Date: Mon, 18 Nov 2013 12:29:08 GMT Connection: keep-alive Keep-Alive: timeout=60 Location: http://example.com/foo/bar.html Vary: Accept-Encoding X-Galaxy: Andromeda-2