dede apache伪静态化如何配置实现?

99ANYc3cd6
预计阅读时长 21 分钟
位置: 首页 DEDE建站 正文
  1. 开启 Apache 的伪静态模块:确保 Apache 支持 .htaccess 文件。
  2. 配置 DedeCMS 后台:在 DedeCMS 管理界面中开启伪静态功能。
  3. 创建 .htaccess 文件:在网站根目录下创建并配置规则文件,告诉 Apache 如何重写 URL。

第一步:开启 Apache 的 mod_rewrite 模块

这是伪静态化的基础,mod_rewrite 是 Apache 的一个强大的 URL 重写引擎。

dede apache伪静态化
(图片来源网络,侵删)
  1. 检查模块是否已加载

    • 在服务器上,找到 Apache 的配置文件 httpd.conf(通常位于 /etc/httpd//usr/local/apache2/conf/ 等目录,具体路径取决于你的安装方式)。
    • 在文件中搜索 LoadModule rewrite_module,如果这行代码没有被注释(即行首没有 ),说明模块已加载,如果被注释了,请去掉 。
      #LoadModule rewrite_module modules/mod_rewrite.so  <-- 注释状态
      LoadModule rewrite_module modules/mod_rewrite.so  <-- 取消注释
    • 保存 httpd.conf 文件。
  2. 配置虚拟主机目录权限

    • httpd.conf 中找到你的网站虚拟主机配置部分(<VirtualHost> 标签内)。

    • 找到 <Directory> 标签,确保它允许覆盖 (AllowOverride),这是让 .htaccess 文件生效的关键。

      dede apache伪静态化
      (图片来源网络,侵删)
      <VirtualHost *:80>
          # ... 其他配置 ...
          DocumentRoot "/path/to/your/website" # 你的网站根目录
          ServerName yourdomain.com
          <Directory "/path/to/your/website">
              Options Indexes FollowSymLinks
              AllowOverride All  <!-- 确保这里是 All -->
              Require all granted
          </Directory>
          # ... 其他配置 ...
      </VirtualHost>
    • AllowOverride All 表示允许该目录下的 .htaccess 文件覆盖所有的 Apache 配置。

  3. 重启 Apache 服务

    • 保存 httpd.conf 文件后,必须重启 Apache 服务使配置生效。
      # 在 Linux 系统上
      sudo systemctl restart httpd    # CentOS 7+/RHEL 7+/Fedora
      # 或者
      sudo service httpd restart      # CentOS 6/RHEL 6
      # 或者
      sudo /etc/init.d/apache2 restart # Debian/Ubuntu

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

  1. 登录 DedeCMS 后台:使用管理员账号登录你的网站后台。
  2. 进入系统设置:在左侧菜单中,找到并点击 “系统” -> “系统基本参数”
  3. 设置伪静态开关
    • 在打开的页面中,找到 “是否使用伪静态” 选项。
    • 将其值从 “不使用” 修改为 “是”
    • 重要:仔细检查下方的 “栏目列表”“文章列表”页” 等选项的 URL 规则是否是你想要的格式(如 plus/list-1-1.html),DedeCMS 默认提供了一些规则,通常可以直接使用。
  4. 保存设置:点击页面底部的“保存”按钮。

第三步:创建并配置 .htaccess 文件

这是最关键的一步,它定义了 URL 重写的具体规则。

  1. 获取规则文件

    • DedeCMS 官方程序包中已经包含了 .htaccess 文件,但通常被命名为 htaccess.txt
    • 请在你的 DedeCMS 程序根目录(dedecms/)下找到这个 htaccess.txt 文件。
  2. 修改规则文件

    • 用文本编辑器(如 Notepad++, VS Code, Sublime Text 等)打开 htaccess.txt

    • 重要:检查文件开头的 RewriteBase 指令,如果你的网站是部署在 Web 根目录(如 http://yourdomain.com/),则 RewriteBase / 是正确的,如果你的网站是部署在子目录(如 http://yourdomain.com/mycms/),则需要修改为 RewriteBase /mycms/

      # 如果网站在根目录
      RewriteBase /
      # 如果网站在子目录 /dedecms/ 下
      # RewriteBase /dedecms/
    • 通常如下(这是 DedeCMS 5.7 版本的经典规则):

      <IfModule mod_rewrite.c>
        Options +FollowSymlinks
        RewriteEngine On
        RewriteBase /
        # 绑定域名到子目录
        # RewriteCond %{HTTP_HOST} ^(^.*)$
        # RewriteCond %{REQUEST_URI} !^/subdir/
        # RewriteCond %{REQUEST_FILENAME} !-f
        # RewriteCond %{REQUEST_FILENAME} !-d
        # RewriteRule ^(.*)$ /subdir/$1 [L]
        # 绑定域名到子目录结束
        # 将 RewriteEngine 模式打开
        RewriteEngine On
        # 修改以下语句中的 /dedecms 为你的DedeCms安装目录:
        # RewriteBase /
        # Rewrite 系统规则请勿修改
        RewriteRule ^index\.html$ /index\.php [I]
        RewriteRule ^plus/list-([0-9]+)\.html$ /plus/list\.php\?tid=$1 [I]
        RewriteRule ^plus/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list\.php\?tid=$1&totalresult=$2&PageNo=$3 [I]
        RewriteRule ^plus/view-([0-9]+)-([0-9]+)\.html$ /plus/view\.php\?arcID=$1&pageno=$2 [I]
        RewriteRule ^plus/view-([0-9]+)\.html$ /plus/view\.php\?arcID=$1 [I]
        RewriteRule ^([a-z0-9\-]+)\.html$ /plus/view\.php?aid=$1 [I]
        RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)\.html$ /plus/$2\.php\?pathinfo=$1 [I]
        RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)\.html$ /plus/$2\.php\?pathinfo=$1/$3 [I]
        RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4 [I]
        RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5 [I]
        RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5/$6 [I]
        RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5/$6/$7 [I]
        RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5/$6/$7/$8 [I]
        RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5/$6/$7/$8/$9 [I]
        RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)-([a-z0-9\-]+)\.php$ /plus/$2\.php\?pathinfo=$1/$3/$4/$5/$6/$7/$8/$9/$10 [I]
      </IfModule>
    • 注意[I] 标志在 Apache 2.4+ 版本中已不推荐使用,它用于忽略大小写,在 Apache 2.4+ 中,你可以使用 [NC] 标志来达到同样的效果,或者直接使用不区分大小写的正则表达式,但为了兼容性,很多模板依然保留 [I],它在大多数环境下也能正常工作。

  3. 上传文件并重命名

    • 将修改好的 htaccess.txt 文件通过 FTP 或其他方式上传到你的网站根目录(与 index.php 文件同级)。
    • 上传成功后,将其重命名为 .htaccess,这个文件名是隐藏文件,在某些 FTP 工具中可能需要设置才能看到。

第四步:验证和测试

完成以上所有步骤后,你的伪静态应该就已经配置成功了。

  1. 清除缓存:登录 DedeCMS 后台,进入 “系统” -> “一键更新网站” -> “更新HTML”,选择“更新栏目页”和“更新文档页”,然后点击“开始更新”,这会生成静态 HTML 文件,并确保链接正确。
  2. 访问测试
    • 在浏览器中访问你的网站首页。
    • 尝试点击一个栏目,观察浏览器地址栏的 URL 是否已经变成了 plus/list-x.html 的形式。
    • 尝试点击一篇文章,观察 URL 是否变成了 plus/view-x.html 的形式。
    • 如果点击后能正常打开页面,说明伪静态配置成功。

常见问题排查

如果配置后出现 404 Not Found 错误,请检查以下几点:

  1. .htaccess 文件位置错误:确保 .htaccess 文件在网站根目录。
  2. AllowOverride 设置错误:回到第一步,检查 httpd.conf 中对应目录的 AllowOverride 是否为 All
  3. mod_rewrite 模块未加载:确保 LoadModule rewrite_module ... 行没有被注释。
  4. RewriteBase 路径错误:如果你的网站在子目录,RewriteBase 必须正确设置。
  5. 文件权限问题:确保 Apache 进程(通常是 www-dataapache 用户)对 .htaccess 文件和网站目录有读取和执行权限。
  6. URL 规则不匹配:检查后台设置的 URL 规则是否与 .htaccess 文件中的 RewriteRule 完全一致。
  7. 其他 Apache 插件冲突:某些安全插件或缓存插件可能会干扰 URL 重写,尝试暂时禁用它们进行测试。

按照以上步骤一步步操作,你就可以成功地为 DedeCMS 在 Apache 服务器上配置好伪静态了。

-- 展开阅读全文 --
头像
织梦5.7图片如何绑定二级域名?
« 上一篇 01-05
dede list为何无内容显示?
下一篇 » 01-05
取消
微信二维码
支付宝二维码

目录[+]