插件窝 干货文章 nginx怎么伪静态

nginx怎么伪静态

静态 Nginx 配置 rewrite 678    来源:    2025-04-07

Nginx 伪静态配置指南

伪静态是指通过服务器配置,将动态URL转换为看起来像静态URL的形式,既保持URL的美观性,又不影响动态功能的实现。以下是Nginx配置伪静态的详细方法:

基本配置方法

1. 修改Nginx配置文件

通常位于 /etc/nginx/nginx.conf/etc/nginx/sites-available/your_site.conf

server {
    listen 80;
    server_name yourdomain.com;

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

    # 伪静态规则示例
    location ~* ^/article/([0-9]+)\.html$ {
        rewrite ^/article/([0-9]+)\.html$ /article.php?id=$1 last;
    }
}

2. 常用伪静态规则示例

WordPress伪静态

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

Discuz伪静态

rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;

通用PHP伪静态

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

高级配置技巧

1. 条件判断伪静态

if ($request_uri ~* "^(.*/)index\.php$") {
    rewrite ^(.*/)index\.php$ $1 permanent;
}

2. 多参数伪静态

rewrite ^/product/([0-9]+)-([a-z]+)\.html$ /product.php?id=$1&name=$2 last;

3. 排除特定文件或目录

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 30d;
    access_log off;
}

配置完成后

  1. 测试配置是否正确:
nginx -t
  1. 重新加载Nginx配置:
nginx -s reload
# 或
systemctl reload nginx

注意事项

  1. 不同的CMS系统有不同的伪静态规则,建议查阅相应系统的官方文档
  2. 复杂的伪静态规则可能会影响性能,应合理设计
  3. 伪静态规则应放在server块或location块中
  4. 使用last标记表示停止处理当前重写规则,开始搜索匹配新URI的位置

如需针对特定系统或框架的伪静态配置,可以提供更多详细信息,我可以给出更具体的配置方案。