Nginx的rewrite指令
Nginx的rewrite指令
rewrite
指令在Nginx中用于对请求的URI进行重写操作,通过正则表达式来匹配和替换请求路径。这在需要调整请求路径或进行URL重定向时非常有用。以下是关于Nginx rewrite
指令的详细介绍:
基本语法
rewrite
指令一般用于 server
、location
或 if
块中,其基本语法如下:
rewrite regex replacement [flag];
-
regex
:要匹配的正则表达式。 -
replacement
:替换后的URI。 -
flag
:用于控制重写操作的标志。
常用标志
-
last
:- 终止当前
rewrite
指令,并祛除余下所有规则的执行。服务将在新位置重新开始搜索请求。 - 类似于 Apache 的
L
标志。
- 终止当前
-
break
:- 终止当前
rewrite
指令的执行,但不进行位置重新搜索。
- 终止当前
-
redirect
:- 返回302临时重定向到重新写的URI(替换后的URI)。强制浏览器使用替换URI重新请求。
-
permanent
:- 返回301永久重定向到替换后的URI。
示例
-
基本重写:
rewrite ^/images/(.*)\.jpg$ /pics/$1.png; 将
/images/example.jpg
重写为/pics/example.png
。 -
重定向:
rewrite ^/oldpath/(.*)$ /newpath/$1 permanent; 将
/oldpath/anything
重定向(301)为/newpath/anything
。 -
使用
last
标志进行重写:server { listen 80; server_name example.com; location / { rewrite ^/foo/(.*)$ /bar/$1 last; } } 如果请求为
/foo/item
,会被重写为/bar/item
,然后Nginx会对/bar/item
再进行匹配。 -
条件重写(if 块) :
if ($http_user_agent ~* "MSIE") { rewrite ^(.*)$ /msie.html break; } 如果请求是来自IE浏览器,重写任何请求到
/msie.html
。
注意事项
-
rewrite
指令的执行顺序是在请求的处理规则前面,这意味着它在location
块内的许多指令之前被执行。 - 使用
if
条件时应小心,因为不当使用可能导致不必要的性能影响或者逻辑错误。 -
rewrite
指令一般用于简单的URI重写场景,对于更复杂的请求处理逻辑,通常结合Nginx的其他高级特性来实现。
通过正确使用 rewrite
指令,可以优化URL结构,提高SEO效果,或者将请求重定向到新的服务路径。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器