温馨提示×

Debian LNMP如何设置伪静态

小樊
40
2026-07-15 18:01:52
栏目: 智能运维

Debian + LNMP(Linux + Nginx + MySQL + PHP) 环境下,设置伪静态(URL Rewrite)主要是通过 Nginx 的 rewrite 规则 来实现的。下面按常见程序通用方法详细说明。


一、伪静态基本原理(Nginx)

Nginx 没有 Apache 的 .htaccess
伪静态规则一般写在:

server {
    location ~ \.php$ {
        ...
    }

    location / {
        # 伪静态规则一般放这里
    }
}

核心配置指令:

  • try_files
  • rewrite

二、通用伪静态写法(推荐)

✅ 最常见通用规则(适用于 WordPress / Typecho / 多数程序)

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

✅ 含义:

  • 先找真实文件
  • 再找真实目录
  • 最后转发给 index.php

三、常见程序伪静态规则

1️⃣ WordPress

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

✅ 无需额外 rewrite


2️⃣ Typecho

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

或(推荐):

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

3️⃣ Discuz! X

rewrite ^/topic-(.+)\.html$ /portal.php?mod=topic&topic=$1 last;
rewrite ^/article-([0-9]+)-([0-9]+)\.html$ /portal.php?mod=view&aid=$1&page=$2 last;
rewrite ^/forum-(\w+)-([0-9]+)\.html$ /forum.php?mod=forumdisplay&fid=$1&page=$2 last;
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=viewthread&tid=$1&page=$2 last;
rewrite ^/group-([0-9]+)-([0-9]+)\.html$ /group.php?mod=group&fid=$1&page=$2 last;
rewrite ^/space-(username|uid)-(.+)\.html$ /home.php?mod=space&$1=$2 last;

4️⃣ ThinkPHP(常见)

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

或(推荐):

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

四、完整 Nginx 站点配置示例

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.php index.html;

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

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

五、修改后必须执行的操作

1️⃣ 检查配置

nginx -t

2️⃣ 重载 Nginx

systemctl reload nginx

service nginx reload

六、常见问题排查

❌ 伪静态不生效

✅ 检查:

  • 规则是否写在 server {}
  • 是否重新加载 Nginx
  • 程序后台是否开启伪静态
  • 是否访问的是正确 URL

❌ 404 错误

常见原因:

  • try_files 路径错误
  • root 目录不对
  • PHP 未正常解析

七、总结

场景 推荐方式
通用 CMS try_files
老程序 rewrite
新项目 try_files
Debian 稳定 Nginx ≥ 1.18

如果你能告诉我:

  • 具体 CMS / 框架
  • Debian 版本
  • Nginx 版本

我可以 直接给你一份可用的完整配置文件

0