dede nginx 伪静态规则如何配置?

99ANYc3cd6
预计阅读时长 23 分钟
位置: 首页 DEDE建站 正文

伪静态的主要作用是将动态的 URL(如 plus/list.php?tid=1)转换为静态或看似静态的 URL(如 /plus/list-1.html),这有助于 提升用户体验、有利于搜索引擎优化(SEO),并能隐藏网站的技术细节。


第一步:理解 DedeCMS 的 Nginx 伪静态规则

DedeCMS 的官方提供了一套标准的 Nginx 伪静态规则,这套规则主要处理以下几个核心模块的 URL 重写:

  • 栏目列表页: plus/list.php -> /plus/list-{栏目ID}.html
  • : plus/view.php -> /plus/view-{文章ID}.html
  • 自定义页面: plus/list.php?tid={自定义栏目ID} -> /plus/list-{自定义栏目ID}.html
  • 搜索页面: plus/search.php -> /plus/search-{关键词}.html
  • 标签页面: tags.php -> /tags/{标签名}/

这是最常用、最核心的规则,下面我将提供两个版本:简洁版完整版,对于绝大多数网站,简洁版就足够了。


第二步:获取伪静态规则代码

简洁核心版 (推荐)

这个版本包含了最基本和最常用的重写规则,足以让 DedeCMS 的核心功能正常伪静态。

location / {
    if (!-e $request_filename) {
        rewrite "^/plus/list-([0-9]+)\.html$" /plus/list.php?tid=$1 last;
        rewrite "^/plus/view-([0-9]+)\.html$" /plus/view.php?arcid=$1 last;
        rewrite "^/plus/list-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last;
        rewrite "^/plus/view-([0-9]+)-([0-9]+)\.html$" /plus/view.php?arcid=$1&PageNo=$2 last;
        rewrite "^/plus/list\.php\?tid=([0-9]+)$" /plus/list-$1.html last;
        rewrite "^/plus/view\.php\?arcid=([0-9]+)$" /plus/view-$1.html last;
        rewrite "^/plus/list\.php\?tid=([0-9]+)&PageNo=([0-9]+)$" /plus/list-$1-$2.html last;
        rewrite "^/plus/view\.php\?arcid=([0-9]+)&PageNo=([0-9]+)$" /plus/view-$1-$2.html last;
        rewrite "^/tags\.html$" /tags.php last;
        rewrite "^/tags/([a-zA-Z0-9_-]+)$" /tags.php?/$1 last;
        rewrite "^/tags/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$" /tags.php?/$1/$2 last;
    }
}

完整增强版

这个版本包含了简洁版的所有规则,并额外增加了一些规则,如搜索、自定义页面(如 aboutus)等,功能更全面。

location / {
    # 织梦核心伪静态规则
    if (!-e $request_filename) {
        rewrite "^/plus/list-([0-9]+)\.html$" /plus/list.php?tid=$1 last;
        rewrite "^/plus/view-([0-9]+)\.html$" /plus/view.php?arcid=$1 last;
        rewrite "^/plus/list-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last;
        rewrite "^/plus/view-([0-9]+)-([0-9]+)\.html$" /plus/view.php?arcid=$1&PageNo=$2 last;
        # 将动态链接转为伪静态,便于分享
        rewrite "^/plus/list\.php\?tid=([0-9]+)$" /plus/list-$1.html last;
        rewrite "^/plus/view\.php\?arcid=([0-9]+)$" /plus/view-$1.html last;
        rewrite "^/plus/list\.php\?tid=([0-9]+)&PageNo=([0-9]+)$" /plus/list-$1-$2.html last;
        rewrite "^/plus/view\.php\?arcid=([0-9]+)&PageNo=([0-9]+)$" /plus/view-$1-$2.html last;
        # 标签(tags)伪静态
        rewrite "^/tags\.html$" /tags.php last;
        rewrite "^/tags/([a-zA-Z0-9_-]+)$" /tags.php?/$1 last;
        rewrite "^/tags/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$" /tags.php?/$1/$2 last;
        # 搜索页面伪静态
        rewrite "^/search\.html$" /plus/search.php last;
        rewrite "^/search\.html\?keyword=(.*)$" /plus/search.php?keyword=$1 last;
        # 自定义页面(单页面)伪静态
        rewrite "^/([a-zA-Z0-9_-]+)\.html$" /plus/view.php?aid=$1 last;
    }
}

第三步:在 Nginx 配置文件中应用规则

获取到规则后,你需要将它们应用到你的 Nginx 服务器配置中,主要有两种方法:

直接修改 Nginx 主配置文件 (适用于 VPS/独立服务器)

  1. 登录服务器,使用 SSH 连接到你的服务器。

  2. 找到网站配置文件,通常位于 /etc/nginx/sites-available//usr/local/nginx/conf/vhost/ 目录下,文件名通常是你的域名,如 yourdomain.com.conf

  3. 编辑配置文件,使用 vimnano 编辑器打开文件。

    sudo vim /etc/nginx/sites-available/yourdomain.com.conf
  4. 添加规则,在 server { ... } 块内部,添加上面获取到的伪静态规则,一个完整的 server 块示例可能如下:

    server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
        # 网站根目录
        root /var/www/yourdomain.com;
        index index.php index.html index.htm;
        # 在这里添加 DedeCMS 伪静态规则
        location / {
            if (!-e $request_filename) {
                rewrite "^/plus/list-([0-9]+)\.html$" /plus/list.php?tid=$1 last;
                rewrite "^/plus/view-([0-9]+)\.html$" /plus/view.php?arcid=$1 last;
                rewrite "^/plus/list-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last;
                rewrite "^/plus/view-([0-9]+)-([0-9]+)\.html$" /plus/view.php?arcid=$1&PageNo=$2 last;
                # ... (将上面提供的完整规则粘贴到这里)
            }
        }
        # 处理 PHP 请求
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000; # 或者 unix:/var/run/php/php7.4-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
        # 其他配置...
    }
  5. 检查并重载 Nginx 配置

    • 检查语法sudo nginx -t
      • 如果显示 syntax is oktest is successful,说明配置正确。
    • 重载配置sudo systemctl reload nginxsudo nginx -s reload
    • 如果语法错误,请根据提示返回上一步修改配置文件。

使用 Nginx 配置文件 (适用于宝塔面板等)

如果你使用的是宝塔面板、AMH 等可视化管理面板,操作会非常简单。

  1. 登录宝塔面板
  2. 进入 网站 列表,点击你想要配置的网站后面的 “设置”
  3. 在弹出的设置窗口中,切换到 “伪静态” 标签页。
  4. 选择 DedeCMS,宝塔面板通常内置了主流程序的伪静态规则,直接在下拉菜单中选择 “DedeCMS” 即可,它会自动填充好完整的规则。
  5. 点击“保存”,宝塔会自动帮你应用配置并重启 Nginx 服务。

第四步:在 DedeCMS 后台开启伪静态

仅仅在 Nginx 上配置规则还不够,你还需要告诉 DedeCMS 本身也要使用伪静态链接。

  1. 登录 DedeCMS 后台 (/dede/)。
  2. 进入 “系统” -> “系统基本参数”
  3. 在左侧菜单选择 “核心设置”
  4. 找到 “是否使用伪静态” 这个选项,将其值修改为 “是”
  5. 点击 “保存” 按钮。

第五步:测试与验证

完成以上所有步骤后,伪静态就设置成功了,现在进行验证:

  1. 清除浏览器缓存 或使用无痕/隐私模式访问。
  2. 访问栏目列表页:检查原来的动态链接(如 http://yourdomain.com/plus/list.php?tid=1)是否能正常访问,URL 地址栏是否已经变成了伪静态的形式(如 http://yourdomain.com/plus/list-1.html)。
  3. 访问文章内容页:同样检查,动态链接(http://yourdomain.com/plus/view.php?aid=123)是否变成了 http://yourdomain.com/plus/view-123.html
  4. 检查网站地图(Sitemap):在后台生成网站地图,查看里面的链接是否都是 .html 格式的。
  5. 检查搜索和标签页:确保这些功能也能正常使用。

如果一切正常,恭喜你,你的 DedeCMS 网站已经成功配置了 Nginx 伪静态!

常见问题排查

  • 问题1:404 Not Found

    • 原因:Nginx 规则未生效,或者文件/目录不存在。
    • 排查
      1. 确认 Nginx 配置文件是否正确保存并重载。
      2. 确认 plus/ 目录下的 list.php, view.php, tags.php 等文件是否存在。
      3. 检查网站目录的权限是否正确(通常是 755750,文件权限是 644)。
  • 问题2:首页正常,但内页打不开

    • 原因:通常是 DedeCMS 后台的“是否使用伪静态”选项没有设置为“是”。
    • 排查:回到第四步,检查后台设置。
  • 问题3:重定向循环 (Redirect Loop)

    • 原因:Nginx rewrite 规则与服务器其他规则(如 WordPress 规则)冲突,或者规则本身有逻辑错误。
    • 排查:检查你的 Nginx 配置文件,确保没有其他冲突的 rewrite 规则,可以先尝试使用最简单的规则进行测试。

希望这份详细的指南能帮助你顺利完成 DedeCMS 在 Nginx 上的伪静态配置!

-- 展开阅读全文 --
头像
dede html2text功能实现原理是什么?
« 上一篇 02-03
dede arclist循环
下一篇 » 02-03

相关文章

取消
微信二维码
支付宝二维码

目录[+]