nginx中location段重定向含义

基本语法:location [=||*|^~] /uri/ { … }

= 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。
~ 为区分大小写匹配(可用正则表达式)
!~为区分大小写不匹配
~* 为不区分大小写匹配(可用正则表达式)
!~*为不区分大小写不匹配
^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。

简单且快速的 return

return 301 https://example.com$request_uri;

你需要把这段代码放到nginx配置文件的server代码块中,301是永久重定向,你也可以设置成302做一个临时重定向(不建议)。

一个完整的例子:

server {
    listen 80;
    listen [::]:80;
    hostname example.com www.example.com;
    return 301 https://example.com$request_uri;
}

一些重定向的例子

http 重定向为 https

return 301 https://$host$request_uri;

统一规范域名

server_name example.com www.example.com example.net www.example.net _;
if ( $host != $server_name ) {
    return 301 $scheme://$server_name$request_uri;
}

含 www 和 不含 www 之间的重定向

# non-www to www
if ( $host !~ ^www\. ) {
    return 301 $scheme://www.$host$request_uri;
}
# www to non-www
if ( $host ~ ^www\.(?<domain>.+)$ ) {
    return 301 $scheme://$domain$request_uri;
}

附录 重定向中常用全局变量

$scheme // HTTP方法(如http,https),如:http
$host // 请求主机头字段,否则为服务器名称,如:blog.fangyongle.com
$server_name // 服务器名称,如:blog.fangyongle.com
$request_uri // 包含请求参数的原始URI,不包含主机名,如:/2018/81.html?a=1&b=2
$request_filename // 当前请求的文件的路径名,由root或alias和URI request组合而成,如:/2013/81.html

你可能感兴趣的:(Nginx)