插件窝 干货文章 nginx伪静态规则怎么定义

nginx伪静态规则怎么定义

rewrite Nginx 静态 规则 767    来源:    2025-04-22

Nginx伪静态规则定义指南

伪静态(URL重写)是Nginx中常用的功能,用于将动态URL转换为看起来像静态URL的形式,提高SEO友好性和用户体验。

基本语法结构

Nginx的伪静态规则主要通过rewrite指令实现:

rewrite regex replacement [flag];

常见配置位置

  1. server块:对整个服务器生效
  2. location块:对特定路径生效

常用规则示例

1. 基本重定向

rewrite ^/oldpage$ /newpage permanent;

2. 去除index.php

rewrite ^/(.*)$ /index.php/$1 last;

3. 伪静态化动态URL

# 将 /article/123 重写为 /article.php?id=123
rewrite ^/article/(\d+)$ /article.php?id=$1 last;

4. 多参数伪静态

# 将 /product/5/category/12 重写为 /product.php?id=5&cat=12
rewrite ^/product/(\d+)/category/(\d+)$ /product.php?id=$1&cat=$2 last;

5. 强制HTTPS

rewrite ^(.*)$ https://$host$1 permanent;

常用flag标志

  • last:停止处理当前rewrite指令,继续匹配location
  • break:停止处理所有rewrite指令
  • redirect:返回302临时重定向
  • permanent:返回301永久重定向

完整示例配置

server {
    listen 80;
    server_name example.com;

    location / {
        # 如果请求的不是真实存在的文件或目录
        if (!-e $request_filename) {
            # 重写到index.php作为入口
            rewrite ^/(.*)$ /index.php/$1 last;
        }
    }

    # 文章伪静态规则
    location /article {
        rewrite ^/article/(\d+)$ /article.php?id=$1 last;
    }

    # 产品伪静态规则
    location /product {
        rewrite ^/product/([a-z]+)/(\d+)$ /product.php?type=$1&id=$2 last;
    }
}

注意事项

  1. 规则匹配是按顺序进行的,应将具体规则放在通用规则之前
  2. 过度使用rewrite会影响性能,应合理设计
  3. 修改配置后记得测试并重载Nginx:nginx -t && nginx -s reload
  4. 使用return指令对于简单重定向更高效

调试技巧

  1. 开启rewrite日志: nginx rewrite_log on; error_log /var/log/nginx/error.log notice;
  2. 使用echo模块测试规则

希望这些信息能帮助您定义Nginx伪静态规则。根据您的具体应用场景,可能需要调整这些示例规则。