dede页面如何改成伪静态?

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

核心原理

DedeCMS 的伪静态实现主要依赖于两个部分:

dede页面改成伪静态
(图片来源网络,侵删)
  1. 后台配置:告诉 DedeCMS 系统,你需要生成什么样的 URL 格式。
  2. 服务器配置:将用户访问的、看起来像静态文件的 URL(如 category/1.html重写为服务器能够处理的动态 URL(如 plus/list.php?tid=1),这一步是关键,由服务器软件(如 Apache 或 Nginx)完成。

第一步:准备工作

在开始之前,请务必备份!这是一个好习惯,可以防止误操作导致网站无法访问。

  1. 备份网站文件:将你的整个网站目录打包下载。
  2. 备份数据库:在 DedeCMS 后台,进入【系统】-> 数据库备份/还原,进行一次完整的数据备份。
  3. 确认服务器环境:你需要知道你的网站运行在哪种服务器上,最常见的是 ApacheNginx,你可以通过在服务器上执行 phpinfo() 函数来查看,或者在购买主机时服务商已经告知。

第二步:DedeCMS 后台设置

这是最基础的一步,目的是让 DedeCMS 生成符合你预期的链接。

  1. 登录 DedeCMS 后台

  2. 进入【系统】-> 系统基本参数

    dede页面改成伪静态
    (图片来源网络,侵删)
  3. 在左侧菜单栏选择 核心设置

  4. 找到以下几项关键设置,并修改它们的值:

    • (可选) 是否使用伪静态

      • 选项:是
      • 说明:这个选项是总开关,如果这里选“否”,后面的设置可能无效,但有些版本的 DedeCMS 这个选项只是提示,主要看下面的具体规则。
    • (核心) 文件命名规则

      dede页面改成伪静态
      (图片来源网络,侵删)
      • 栏目列表页{typedir}/index_{page}.html
      • 文档列表页{typedir}/list_{page}.html
      • {typedir}/{aid}.html
      • {typedir}/{keyword}.html
      • 说明:这是定义你希望生成的 URL 格式。{typedir} 是栏目目录,{page} 是页码,{aid} 是文章 ID,你可以根据喜好自定义,但必须和后面服务器里的 Rewrite 规则匹配
    • (核心) 顶级栏目默认页命名规则

      • 选项{typedir}/index.html
      • 说明:设置顶级栏目首页的文件名。
    • (核心) 列表命名规则

      • 选项{typedir}/list_{page}.html
      • 说明:设置栏目分页的文件名。
  5. 点击“保存”按钮


第三步:服务器环境配置 (核心步骤)

这是伪静态能否成功的关键,你需要根据你的服务器类型,选择对应的操作。

Apache 服务器

Apache 服务器通过 .htaccess 文件来实现 URL 重写。

  1. 找到或创建 .htaccess 文件

    • 这个文件通常位于你的网站根目录(/public_html//wwwroot/)下。
    • 如果没有,请创建一个名为 .htaccess 的文件(注意前面的点,没有后缀名)。
  2. 添加 Rewrite 规则

    • 将以下规则复制并粘贴到你的 .htaccess 文件中。
    • 注意:请确保将 Your_DedeCMS_Path 替换为你的 DedeCMS 程序在服务器上的实际路径(通常是 或 /public_html/),你可以通过 echo $_SERVER['DOCUMENT_ROOT']; 来获取这个路径。
    # 将 RewriteEngine 开启
    RewriteEngine On
    # --- DedeCMS 5.7 伪静态规则 ---
    # 如果你的 DedeCMS 不在根目录,请修改 RewriteBase 的值
    # 程序在 /cms/ 目录下,则 RewriteBase /cms/
    RewriteBase /
    # 会员、搜索等页面
    RewriteRule^(plus/list-([0-9]+).html)$plus/list.php?tid=$2
    RewriteRule^(plus/view-([0-9]+)-([0-9]+).html)$plus/view.php?arcID=$2&pageno=$3
    RewriteRule^(plus/list-([0-9]+)-([0-9]+).html)$plus/list.php?tid=$2&PageNo=$3
    RewriteRule^(plus/list-([0-9]+)-([0-9]+).html)$plus/list.php?tid=$2&PageNo=$3
    RewriteRule^(plus/feedback\.html)$plus/feedback\.php
    RewriteRule^(plus/([a-z]+)-([a-z]+)-([0-9]+)\.html)$plus/$2\.php?$3=$4
    RewriteRule^(plus/([a-z]+)-([a-z]+)-([0-9]+)-([0-9]+)\.html)$plus/$2\.php?$3=$4&$5=$6
    # 栏目、文章页面
    RewriteRule^(category/([0-9]+)/([0-9]+)\.html)$plus/list\.php\?tid=$2&PageNo=$3
    RewriteRule^(category/([0-9]+)\.html)$plus/list\.php\?tid=$2
    RewriteRule^(archives/([0-9]+)\.html)$plus/view\.php\?arcID=$2
    RewriteRule^(category/([0-9]+)/index\.html)$plus/list\.php\?tid=$2
    RewriteRule^(category/([0-9]+)/list-([0-9]+)\.html)$plus/list\.php\?tid=$2&PageNo=$3
    RewriteRule^(tags\.html)$plus/tags\.php
    RewriteRule^(tags/([^-]+)(-([0-9]+))\.html)$plus/tags\.php\?\/$1\/$3
    # 默认首页
    RewriteRule^index\.html$index\.php
    # 禁止访问 .htaccess 文件
    <Files ".htaccess">
        Order allow,deny
        Deny from all
    </Files>
  3. 保存文件,并将其通过 FTP 上传到你的网站根目录,如果已存在,则用新内容覆盖。

Nginx 服务器

Nginx 服务器需要在网站的配置文件中添加 rewrite 规则。

  1. 找到 Nginx 配置文件

    • 这个文件通常位于 /etc/nginx/sites-available/ 目录下,文件名是你的域名(如 yourdomain.com)。
    • 你需要登录到你的服务器(或使用主机面板的文件管理器)来编辑它。
  2. 添加 Rewrite 规则

    • server { ... } 块内,添加以下 rewrite 规则。
    server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
        root /var/www/yourdomain.com; # 替换为你的网站根目录
        # ... 其他配置 ...
        # DedeCMS 伪静态开始
        location / {
            if (!-e $request_filename) {
                rewrite "^/category/([0-9]+)/([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last;
                rewrite "^/category/([0-9]+)\.html$" /plus/list.php?tid=$1 last;
                rewrite "^/archives/([0-9]+)\.html$" /plus/view.php?arcID=$1 last;
                rewrite "^/category/([0-9]+)/index\.html$" /plus/list.php?tid=$1 last;
                rewrite "^/category/([0-9]+)/list-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last;
                rewrite "^/tags\.html$" /plus/tags.php last;
                rewrite "^/tags/([^-]+)(-([0-9]+))\.html$" /plus/tags.php?/$1/$3 last;
                rewrite "^/index\.html$" /index.php last;
            }
        }
        # ... 其他配置 ...
    }
  3. 保存并重启 Nginx 服务

    • 保存配置文件后,你需要让 Nginx 重新加载配置才能生效。

    • 在服务器终端执行命令:

      # 检查配置文件语法是否正确
      nginx -t
      # 如果提示 successful,则重启 Nginx
      systemctl restart nginx
      # 或者
      service nginx restart

第四步:更新和验证

  1. 更新栏目和文章缓存

    • 登录 DedeCMS 后台。
    • 进入【系统】-> 系统设置-> 全站生成HTML
    • 点击“开始生成”,这一步会根据你后台设置的规则,重新生成所有页面的链接,使其符合伪静态格式。
  2. 验证结果

    • 前台检查:访问你的网站首页,点击任意一个栏目或文章,观察浏览器地址栏的 URL 是否已经变成了你设置的伪静态格式(如 category/1.htmlarchives/123.html)。
    • 后台检查:进入【核心】-> 内容频道管理,点击任意一个栏目,在栏目设置里查看“栏目链接”,它应该也显示为伪静态的 URL。
    • 检查是否正常:确保点击这些新链接后,页面能够正常打开,没有出现“404 Not Found”错误。

常见问题与解决方案

  • 问题:设置后,页面打开出现 404 Not Found 错误。

    • 原因:服务器没有正确配置 Rewrite 规则。
    • 解决
      1. 检查服务器类型:确认你用的是 Apache 还是 Nginx,并应用了对应的规则。
      2. 检查路径:对于 Apache,检查 RewriteBase 是否正确;对于 Nginx,检查 root 路径是否正确。
      3. 检查权限:确保 .htaccess 文件在根目录且有正确的读写权限(通常是 644)。
      4. 检查模块:对于 Apache,确保 mod_rewrite 模块已启用(通常默认启用)。
  • 问题:后台设置里的“栏目链接”还是动态链接。

    • 原因:没有进行“全站生成HTML”操作。
    • 解决:执行第四步的“更新栏目和文章缓存”操作。
  • 问题:首页可以打开,但栏目页打开是空白或乱码。

    • 原因:通常是服务器 Rewrite 规则中的路径问题。
    • 解决:仔细检查 Nginx 配置中的 root 路径或 Apache 的 RewriteBase 路径,确保指向你的网站根目录。
  • 问题:使用了第三方模板,规则不匹配怎么办?

    • 解决:你需要根据你的模板实际生成的链接结构,去修改服务器 Rewrite 规则,如果你的模板生成的是 html/category/1/1.html,你就需要把规则里的 category/ 改成 html/category/,关键在于后台设置服务器规则必须保持一致。

希望这份详细的教程能帮助你成功将 DedeCMS 改为伪静态!如果在操作中遇到任何问题,可以随时提问。

-- 展开阅读全文 --
头像
dede如何调用文章正文?
« 上一篇 今天
while(x=0)为何x=0却循环?
下一篇 » 今天

相关文章

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

目录[+]