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