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。

示例

  1. 基本重写

    rewrite ^/images/(.*)\.jpg$ /pics/$1.png;

    /images/example.jpg​ 重写为 /pics/example.png​。

  2. 重定向

    rewrite ^/oldpath/(.*)$ /newpath/$1 permanent;

    /oldpath/anything​ 重定向(301)为 /newpath/anything​。

  3. 使用last标志进行重写

    server {
    listen 80;
    server_name example.com;
    location / {
    rewrite ^/foo/(.*)$ /bar/$1 last;
    }
    }

    如果请求为 /foo/item​,会被重写为 /bar/item​,然后Nginx会对 /bar/item​ 再进行匹配。

  4. 条件重写(if 块)

    if ($http_user_agent ~* "MSIE") {
    rewrite ^(.*)$ /msie.html break;
    }

    如果请求是来自IE浏览器,重写任何请求到 /msie.html​。

注意事项

  • rewrite​ 指令的执行顺序是在请求的处理规则前面,这意味着它在 location​ 块内的许多指令之前被执行。
  • 使用if​条件时应小心,因为不当使用可能导致不必要的性能影响或者逻辑错误。
  • rewrite​指令一般用于简单的URI重写场景,对于更复杂的请求处理逻辑,通常结合Nginx的其他高级特性来实现。

通过正确使用 rewrite​ 指令,可以优化URL结构,提高SEO效果,或者将请求重定向到新的服务路径。

posted @   程序员朱永胜  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示