当前位置:

首页 > 编程开发 > 怎样在Nginx中配置URL重写

怎样在Nginx中配置URL重写

Nginx URL重写配置实战指南 在Nginx的世界里,想让URL按照你的心意跳转或变形,rewrite指令绝对是你的得力助手。今天,咱们就来聊聊如何配置它,让它乖乖听话。下面是一些核心的配置方法和实例,帮你快速上手。 1. 基本重写规则 先从最简单的场景说起。比如,你想把用户访问/oldpage

Nginx URL重写配置实战指南

在Nginx的世界里,想让URL按照你的心意跳转或变形,rewrite指令绝对是你的得力助手。今天,咱们就来聊聊如何配置它,让它乖乖听话。下面是一些核心的配置方法和实例,帮你快速上手。

1. 基本重写规则

先从最简单的场景说起。比如,你想把用户访问/oldpage的请求,统统引导到/newpage去。这个需求很常见,配置起来也相当直接:

server {
    listen 80;
    server_name example.com;

    location /oldpage {
        rewrite ^/oldpage$ /newpage permanent;
    }
}

2. 使用正则表达式

当然,实际需求往往更复杂。这时候,正则表达式就能大显身手了。举个例子,如果你需要把所有以/category/开头的URL,都重写到/archive.php?cat=$1这个动态页面上,可以这么写:

server {
    listen 80;
    server_name example.com;

    location /category/(.*) {
        rewrite ^/category/(.*)$ /archive.php?cat=$1 last;
    }
}

3. 重定向HTTP到HTTPS

如今,全站HTTPS几乎是标配。如何优雅地将所有HTTP流量无缝转向HTTPS呢?一个高效的配置方案是这样的:

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/ssl/certificate.pem;
    ssl_certificate_key /path/to/ssl/private.key;

    location / {
        # 你的其他配置
    }
}

4. 重写规则与try_files结合使用

有些时候,重写逻辑需要和静态文件检查配合。比如,先看看请求的文件是否存在,如果不存在,再交给后端处理(这在PHP等动态站点中很常见)。这时,try_files指令就派上用场了:

server {
    listen 80;
    server_name example.com;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

5. 重写规则与条件结合使用

更进一步,你还可以为重写加上条件判断。经典的用法是:只有当用户请求的文件在磁盘上确实找不到时,才触发重写规则,将请求转发给前端控制器(如index.php)。这通常借助if指令来实现:

server {
    listen 80;
    server_name example.com;

    location / {
        if (!-e $request_filename) {
            rewrite ^/(.*)$ /index.php last;
        }
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

注意事项

配置虽好,但有几个关键点必须牢记,否则很容易掉进坑里:

  1. 顺序很重要:Nginx处理配置是有顺序的,务必把你的重写规则放在正确的位置,避免被其他规则意外覆盖。
  2. 测试配置:在让新配置生效前,养成一个好习惯——先用nginx -t命令测试一下,确保没有语法错误。
  3. 重启Nginx:修改完配置文件后,别忘记使用systemctl restart nginx或nginx -s reload命令来重启服务,让改动生效。

掌握以上这些步骤和示例,相信你就能在Nginx中游刃有余地驾驭URL重写了。实践出真知,多动手试试吧。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发 Linux
相关文章 更多
Linux如何开启端口号?开放端口命令详解
Linux如何开启端口号?开放端口命令详解

详细讲解Linux如何开启端口号以及常用的开放端口命令。

crossover卸载软件下载及重新安装教程
crossover卸载软件下载及重新安装教程

遇到CrossOver运行错误或需要更新版本时,如何彻底卸载旧版并干净重装?本教程详解macOS和Linux下的卸载步骤、残留文件清理方法及官方下载渠道,确保软件环境纯净稳定。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
IntelliJ IDEA macOS版
IntelliJ IDEA macOS版
Mac

IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

PyCharm macOS版
PyCharm macOS版
Mac

JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

WebStorm macOS版
WebStorm macOS版
Mac

JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

WINDOWS 更多
IntelliJ IDEA Windows版
IntelliJ IDEA Windows版
Windows

JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

PhpStorm Windows版
PhpStorm Windows版
Windows

PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

PyCharm Windows版
PyCharm Windows版
Windows

PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,