织梦.htaccess伪静态规则如何正确配置?

99ANYc3cd6
预计阅读时长 24 分钟
位置: 首页 织梦建站 正文

.htaccess文件是Apache服务器的配置文件,通过它可以实现URL重写,将动态的、带问号的URL地址(如 plus/list.php?tid=1)转换成更美观、更利于SEO的静态化URL地址(如 plus/list-1.html)。

织梦.htaccess伪静态规则
(图片来源网络,侵删)

通用版规则(适用于大多数织梦版本)

这是最常用、最基础的规则,适用于DedeCMS 5.7、5.8等主流版本,它主要处理文章列表、文章内容、搜索等页面的伪静态。

请将以下代码完整复制到您的网站根目录下的 .htaccess 文件中,如果该文件不存在,请手动创建一个。

# 织梦DedeCMS 伪静态规则 (通用版)
# 开启重写引擎
RewriteEngine On
# 如果请求的是一个真实存在的文件或目录,则直接访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 文章列表
RewriteRule ^plus/list-([0-9]+)\.html$ plus/list.php?tid=$1
RewriteRule ^plus/list-([0-9]+)-([0-9]+)\.html$ plus/list.php?tid=$1&PageNo=$2
页
RewriteRule ^plus/view-([0-9]+)-([0-9]+)\.html$ plus/view.php?arcID=$1&pageno=$2
# 栏目目录
RewriteRule ^category/([a-zA-Z0-9_-]+)/$ index.php?tid=$1
RewriteRule ^category/([a-zA-Z0-9_-]+)/([0-9]+)$ index.php?tid=$1&PageNo=$2
# 搜索页
RewriteRule ^search\.html$ plus/search.php
# 标签列表页
RewriteRule ^tags\.html$ plus/tags.php
RewriteRule ^tags/([a-zA-Z0-9_-]+)$ plus/tags.php?/$1
# 自定义页面(单页)
RewriteRule ^page/([a-zA-Z0-9_-]+)\.html$ plus/view.php?aid=$1
# 会员中心
RewriteRule ^member/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)\.html$ member/index.php?$1=$2
RewriteRule ^member/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)\.html$ member/index.php?$1=$2&PageNo=$3
# 问答等其他页面(根据需要添加)
# RewriteRule ^question/([0-9]+)\.html$ question/index.php?id=$1
# 默认首页(可选,根据您的网站首页文件名而定)
# DirectoryIndex index.html index.htm index.php

不同服务器环境的注意事项

Apache 环境 (.htaccess)

这是最标准的情况,您只需要将上面的通用规则保存到网站根目录的 .htaccess 文件中即可。

操作步骤:

织梦.htaccess伪静态规则
(图片来源网络,侵删)
  1. 使用FTP或文件管理器登录您的服务器。
  2. 进入网站根目录(通常是 public_htmlwww)。
  3. 如果没有 .htaccess 文件,新建一个;如果存在,请用上面的代码覆盖或追加内容。
  4. 确保文件编码为 UTF-8(无BOM头)。
  5. 上传覆盖后,检查文件权限,通常设置为 644

Nginx 环境

Nginx 不使用 .htaccess 文件,它的伪静态规则需要写在 Nginx 的配置文件中(通常是 nginx.conf 或您网站虚拟主机配置文件)。

操作步骤:

  1. 找到您的 Nginx 站点配置文件。
  2. server { ... } 块内,添加如下 rewrite 规则。
  3. 修改配置后,需要执行 nginx -s reload 命令重载配置使新规则生效。

Nginx 伪静态规则示例:

# 织梦DedeCMS 伪静态规则 (Nginx版)
location / {
    if (!-e $request_filename) {
        rewrite "^/plus/list-([0-9]+)\.html$" /plus/list.php?tid=$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 "^/category/([a-zA-Z0-9_-]+)/$" /index.php?tid=$1 last;
        rewrite "^/category/([a-zA-Z0-9_-]+)/([0-9]+)$" /index.php?tid=$1&PageNo=$2 last;
        rewrite "^/search\.html$" /plus/search.php last;
        rewrite "^/tags\.html$" /plus/tags.php last;
        rewrite "^/tags/([a-zA-Z0-9_-]+)$" /plus/tags.php?/$1 last;
        rewrite "^/page/([a-zA-Z0-9_-]+)\.html$" /plus/view.php?aid=$1 last;
    }
}

IIS 环境

IIS 服务器需要使用 web.config 文件来实现伪静态。

织梦.htaccess伪静态规则
(图片来源网络,侵删)

操作步骤:

  1. 在网站根目录创建 web.config 文件。
  2. 将下面的 XML 代码复制进去。
  3. 保存后,IIS 会自动加载此配置。

IIS 伪静态规则示例 (web.config):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="DedeCMS Rule 1">
                    <match url="^plus/list-([0-9]+)\.html$" />
                    <action type="Rewrite" url="plus/list.php?tid={R:1}" />
                </rule>
                <rule name="DedeCMS Rule 2">
                    <match url="^plus/list-([0-9]+)-([0-9]+)\.html$" />
                    <action type="Rewrite" url="plus/list.php?tid={R:1}&amp;PageNo={R:2}" />
                </rule>
                <rule name="DedeCMS Rule 3">
                    <match url="^plus/view-([0-9]+)-([0-9]+)\.html$" />
                    <action type="Rewrite" url="plus/view.php?arcID={R:1}&amp;pageno={R:2}" />
                </rule>
                <rule name="DedeCMS Rule 4">
                    <match url="^category/([a-zA-Z0-9_-]+)/$" />
                    <action type="Rewrite" url="index.php?tid={R:1}" />
                </rule>
                <rule name="DedeCMS Rule 5">
                    <match url="^category/([a-zA-Z0-9_-]+)/([0-9]+)$" />
                    <action type="Rewrite" url="index.php?tid={R:1}&amp;PageNo={R:2}" />
                </rule>
                <rule name="DedeCMS Rule 6">
                    <match url="^search\.html$" />
                    <action type="Rewrite" url="plus/search.php" />
                </rule>
                <rule name="DedeCMS Rule 7">
                    <match url="^tags\.html$" />
                    <action type="Rewrite" url="plus/tags.php" />
                </rule>
                <rule name="DedeCMS Rule 8">
                    <match url="^tags/([a-zA-Z0-9_-]+)$" />
                    <action type="Rewrite" url="plus/tags.php?/{R:1}" />
                </rule>
                <rule name="DedeCMS Rule 9">
                    <match url="^page/([a-zA-Z0-9_-]+)\.html$" />
                    <action type="Rewrite" url="plus/view.php?aid={R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

织梦后台设置(至关重要!)

设置了服务器伪静态规则后,必须在织梦后台进行相应设置,否则生成的链接仍然是动态的。

  1. 登录织梦后台http://您的域名/dede/

  2. 进入“系统” -> “系统基本参数”

  3. 修改“核心设置”

    • 是否使用伪静态:选择“是”。
    • (可选) 伪静态后缀:默认是 .html,可以修改为您想要的,如 .htm,如果修改了,上面的 .htaccess 规则也要同步修改。
  4. 点击“保存”

  5. 更新缓存:在后台右上角找到“系统缓存”并更新。

  6. (推荐)一键更新网站

    • 进入“主页” -> “一键更新网站”。
    • 勾选“更新所有文档”和“更新HTML页面”。
    • 点击“开始更新”,这一步会根据你后台的伪静态设置,重新生成所有页面的链接,使其变成静态格式。

常见问题排查

如果设置后不生效,请按以下顺序检查:

  1. 规则是否生效

    • Apache: 确认 .htaccess 文件在网站根目录,mod_rewrite 模块已启用(通常虚拟主机商已开启)。
    • Nginx: 确认规则已添加到正确的配置文件并执行了 nginx -s reload
    • IIS: 确认 web.config 文件格式正确,且IIS已安装“URL Rewrite”模块。
  2. 后台设置是否正确:再次检查“系统基本参数”中“是否使用伪静态”是否为“是”。

  3. URL格式是否匹配:检查您后台设置的栏目或文章的URL规则,是否与 .htaccess 中的规则匹配,如果后台设置了 plus/list-{tid}.html,那么规则中的 ^plus/list-([0-9]+)\.html$ 就能匹配。

  4. 服务器权限问题:确保服务器有读写网站根目录和文件的权限。

  5. URL冲突:检查是否有其他插件或程序也设置了重写规则,导致冲突。

希望这份详细的指南能帮助您成功配置织梦CMS的伪静态!

-- 展开阅读全文 --
头像
dede getdatetimemk函数如何使用?
« 上一篇 2025-12-13
织梦$pv-gt setvar如何使用?
下一篇 » 2025-12-13

相关文章

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

目录[+]