首页 / 美国服务器 / 正文
Nginx重写详解,nginx重写rewrite

Time:2025年01月07日 Read:9 评论:42 作者:y21dr45

Nginx 的 rewrite 功能允许根据请求的 URL 动态地修改请求路径或进行重定向,通过 URL 重写,可以实现诸如友好 URL、301/302 重定向和条件重写等功能,本文将详细介绍如何在 Nginx 中实现这些功能,并提供一些常见的实际场景。

Nginx重写详解,nginx重写rewrite

什么是 Rewrite?

Rewrite 在 Nginx 中也叫 URL Rewrite,即 URL 重写,就是把传入 Web 的请求重定向到其他 URL 的过程,这一功能在实现隐藏真实目录结构、规范化 URL、防止盗链、HTTP 到 HTTPS 的强制重定向以及跨站点脚本(XSS)防护等方面具有重要作用。

基本语法

Nginx 中的 URL 重写主要依赖于两个指令:rewritetry_files

rewrite 指令

rewrite <匹配规则> <重写目标> [flag];

匹配规则:正则表达式,用于匹配请求的 URL。

重写目标:新的 URL,符合规则时,Nginx 会将请求的 URL 重写为这个目标。

flag:可选的标志,控制重写的行为,常见的标志有lastbreakredirectpermanent

示例

rewrite ^/old-path/(.*)$ /new-path/$1 last;

在这个示例中:

^/old-path/(.*)$ 是正则表达式,匹配以/old-path/ 开头的 URI,并捕获该路径之后的所有内容。

/new-path/$1 是重写后的 URI,其中$1 引用了正则表达式中的第一个捕获组的内容。

last 是一个标志,指示 Nginx 在重写后搜索新的 location 块来处理请求。

try_files 指令

try_files 用于检查一系列文件是否存在,如果文件存在则继续处理,否则进行 URL 重写,它常用于静态资源的处理,例如检查文件是否存在,如果不存在,则重写请求到某个页面(通常是首页或错误页面)。

try_files <文件1> <文件2> ... <重写目标>;

常见场景

301/302 重定向

当你需要将旧 URL 重定向到新 URL 时,rewrite 指令非常有用,301 是永久重定向,告诉搜索引擎这个页面已经被永久移动;302 是临时重定向,表示页面将暂时被移动到新的 URL。

server {
    listen 80;
    server_name example.com;
    location /old-page {
        rewrite ^/old-page$ /new-page permanent;
    }
    location /new-page {
        # 处理新页面的配置
    }
}

非 www 域名重定向到 www 域名

如果你希望所有请求都通过 www.example.com 访问,可以使用 Nginx 重定向非 www 域名的请求。

server {
    listen 80;
    server_name example.com;
    return 301 http://www.example.com$request_uri;
}
server {
    listen 80;
    server_name www.example.com;
    location / {
        # 正常的站点配置
    }
}

rewrite 标志详解

last:停止处理当前的 server 或 location 块中的后续 rewrite 指令,并开始搜索与重写后的 URI 相匹配的新的 location 块,如果找到了匹配的 location 块,Nginx 将重新开始处理该块中的指令。

break:停止处理当前的 server 或 location 块中的后续 rewrite 指令,并且不会搜索与重写后的 URI 相匹配的新的 location 块,Nginx 将继续处理当前 location 块中的其他指令。

redirect:返回 302 临时重定向,告诉客户端使用新的 URI 重新请求,注意,这个标志会导致客户端看到重定向响应,并且可能会改变浏览器的地址栏。

permanent:返回 301 永久重定向,与 redirect 类似,但告诉客户端这个重定向是永久的,同样,客户端会看到重定向响应,并且浏览器的地址栏可能会更新。

Nginx 的 rewrite 功能非常强大且灵活,通过合理使用 rewrite 指令和相关标志,可以实现多种 URL 重写和重定向需求,在实际配置过程中,建议谨慎使用 rewrite 指令,并尽可能使用 location 块和 try_files 指令来实现 URL 重写和请求处理,因为它们通常更易于理解和维护。

标签: nginx重写 
排行榜
关于我们
「好主机」服务器测评网专注于为用户提供专业、真实的服务器评测与高性价比推荐。我们通过硬核性能测试、稳定性追踪及用户真实评价,帮助企业和个人用户快速找到最适合的服务器解决方案。无论是云服务器、物理服务器还是企业级服务器,好主机都是您值得信赖的选购指南!
快捷菜单1
服务器测评
VPS测评
VPS测评
服务器资讯
服务器资讯
扫码关注
鲁ICP备2022041413号-1