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.orgexample.com
example.org/foo.htmlexample.com/foo.html
example.org/dir1/dir2/bar.cgiexample.com//dir1/dir2/bar.cgi
example.org/detail.php?arg=valueexample.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