Nginx rewrite规则详解

T
TrumanWong
11/25/2021

rewirte规则也称为规则重写,主要功能是实现浏览器访问HTTP URL的跳转,其正则表达式是基于Perl语言。通常而言,几乎所有的Web服务器均可以支持URL重写。rewrite URL规则重写的用途如下:

Nginx rewrite规则使用中有3个概念,分别是rewrite结尾标识符、rewrite规则常用表达式、Nginx rewrite变量,3个概念的详解如下:

  1. Nginx rewrite结尾标识符,用于rewrite规则末尾,表示规则的执行属性,详解如下:

其中last和break用来实现URL重写时,浏览器地址栏URL地址不变。

  1. Nginx rewrite规则常用表达式,主要用于匹配参数、字符串及过滤设置,详解如下:

  1. Nginx rewrite变量,常用于匹配HTTP请求头信息、浏览器主机名、URL等,具体内容如下:

HTTP headersHTTP_USER_AGENTHTTP_REFERERHTTP_COOKIEHTTP_HOSTHTTP_ACCEPT

connection & requestREMOTE_ADDRQUERY_STRING

server internalsDOCUMENT_ROOTSERVER_PORTSERVER_PROTOCOL

system stuffTIME_YEARTIME_MONTIME_DAY

详解如下:

以下展示一些Nginx rewrite常见案例:

if ($host = 'trumanwl.com') {
	rewrite ^/(.*)$	https://www.trumanwl.com/$1	permanent;
}
rewrite	^/blog/1$	/newindex.html	last;
if ($host != 'www.trumanwl.com') {
    rewrite	^/(.*)$	https://www.trumanwl.com/$1 permanent;
}
if (! -e $request_filename) {
	rewrite	^/(.*)$	/index.php	last;
}
rewrite	^/(.+)/(\d+)	/$1?id=$2	last;
if ($http_user_agent ~ MSIE) {
    rewrite	^(.*)$	/ie/$1 break;
}
location ~ .*\.(sh|sql|env)$ {
	return 403;
}
if ($http_user_agent ~* "(Android)|(iPhone)|(Mobile)|(WAP)|(UCWEB)") {
    rewrite ^(.*)/$	https://m.trumanwl.com/	permanent;
}
if ($args ~* id=1) {
	return 403;
}
rewrite ^/([0-9])/comment/(.+)$	/index.php?id/$1/comment_id=$2	last;
继续阅读

接下来你可能需要这些内容

优先推荐相关内容,同时保留你的阅读轨迹和收藏入口。