Nginxrewrite重定向配置详解
Nginx的rewrite模块用于实现URL重写和重定向。以下是常见的rewrite配置详解:
1. rewrite指令
语法:
rewrite regex replacement [flag];
作用: 根据正则表达式匹配URL,并将其重写为指定的URL。
参数:
regex
: 正则表达式,用于匹配请求的URL。replacement
: 替换的URL。flag
: 可选参数,用于控制重写行为。
常用flag:
last
: 停止处理当前rewrite
指令,并重新匹配新的URL。break
: 停止处理当前rewrite
指令,不再匹配其他rewrite
规则。redirect
: 返回302临时重定向。permanent
: 返回301永久重定向。
示例:
rewrite ^/old-url$ /new-url permanent;
将/old-url
永久重定向到/new-url
。
2. return指令
语法:
return code [text];
或return code URL;
作用: 直接返回指定的HTTP状态码,并可选择返回文本或重定向URL。
示例:
return 301 /new-url;
返回301状态码,并将请求重定向到/new-url
。
3. if指令
语法:
if (condition) { ... }
作用: 根据条件执行特定的rewrite规则。
示例:
if ($host = 'example.com') { rewrite ^/(.*)$ http://www.example.com/$1 permanent; }
如果请求的host
是example.com
,则将其重定向到www.example.com
。
4. location指令
语法:
location [modifier] uri { ... }
作用: 根据请求的URI匹配特定的配置块,并在其中使用rewrite规则。
示例:
location /old-path { rewrite ^/old-path/(.*)$ /new-path/$1 break; }
将/old-path/
下的所有请求重写到/new-path/
。
5. 常见应用场景
强制HTTPS:
if ($scheme != "https") { return 301 https://$host$request_uri; }
去除www前缀:
if ($host ~* "^www\.(.*)$") { return 301 $scheme://$1$request_uri; }
URL美化:
rewrite ^/product/([0-9]+)$ /product.php?id=$1 last;
6. 注意事项
避免过度使用
if
指令,因为它可能导致性能问题。使用
rewrite
时,注意正则表达式的性能影响。尽量使用
return
指令进行简单的重定向,而不是复杂的rewrite
规则。
通过合理配置rewrite规则,可以实现灵活的URL重定向和重写功能。
本篇文章内容来源于:Nginxrewrite重定向配置详解
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。