核心概念
在开始之前,我们先简单理解一下几个关键概念:

- 静态页面:
.html结尾的网页,服务器直接将文件发送给浏览器,加载速度快,对搜索引擎友好。 - 动态页面:
.php结尾的网页,服务器需要执行PHP代码,从数据库中查询数据,然后生成HTML内容再发送给浏览器,加载相对慢一些。 - 伪静态:本质上还是动态页面,但通过服务器重写规则,将一个看起来像静态页面的URL(如
https://www.example.com/abc.html)映射到一个实际的动态脚本(如https://www.example.com/abc.php),它不需要生成真实的HTML文件,只是改变了URL的显示方式。
第一步:检查并配置服务器环境
伪静态的实现依赖于服务器的模块,最常用的是 Apache 的 mod_rewrite 模块和 Nginx 的 rewrite 功能,你需要根据你的服务器环境进行配置。
Apache 服务器配置
这是最常见的情况,尤其是虚拟主机用户。
a) 检查 mod_rewrite 模块是否开启
虚拟主机商已经默认开启了,如果没有,你需要联系你的主机商开启,或者自己修改 httpd.conf 配置文件,找到下面这行并去掉前面的 :
LoadModule rewrite_module modules/mod_rewrite.so

b) 创建或修改 .htaccess 文件
在你的网站根目录(即 dede 文件夹所在的同一级目录)下,找到或创建一个名为 .htaccess 的文件,如果文件不存在,你可以新建一个。
完整复制**并粘贴到 .htaccess 文件中:
# 织梦伪静态规则
<IfModule mod_rewrite.c>
RewriteEngine On
# 如果请求的是一个真实存在的文件或目录,则直接访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 否则,将所有请求重写到 index.php 上
RewriteRule ^(.*)$ /index.php/$1 [QSA,PT,L]
</IfModule>
注意:
/index.php/这里的路径需要根据你的网站入口文件调整,如果你的网站入口文件在根目录,/index.php/,如果是在子目录,/cms/,那就需要写成/cms/index.php/。[QSA,PT,L]是标志位,分别代表:QSA(Query String Append):保留原有的查询字符串。PT(Pass Through):将重写后的URL交给其他模块处理,这里主要是交给mod_rewrite继续处理index.php。L(Last):这是最后一条规则,匹配到此规则后就不再继续匹配后续规则。
c) 设置目录权限

确保你的网站根目录对Web服务器有写入权限(通常是755),织梦在生成栏目或文章时,可能会需要修改 .htaccess 文件。
Nginx 服务器配置
如果你使用的是 Nginx(如云服务器、Vultr、DigitalOcean等),配置方式有所不同。
a) 修改 Nginx 配置文件
你需要编辑你的 Nginx 站点配置文件,通常位于 /etc/nginx/sites-available/ 目录下(具体路径可能因服务器而异)。
在 server 块中,添加以下 rewrite 规则:
# 织梦伪静态规则 rewrite "^/index\.html$" /index.php last; rewrite "^/special/index\.html$" /special/index.php last; rewrite "^/data/([^\.]+)\.html$" /data/index.php?$1 last; rewrite "^/plus/list-([0-9]+)\.html$" /plus/list.php?tid=$1 last; rewrite "^/plus/view-([0-9]+)-([0-9]+)\.html$" /plus/view.php?arcID=$1&pageno=$2 last; rewrite "^/plus/list-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2 last; rewrite "^/plus/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$" /plus/list.php?tid=$1&PageNo=$2&totalresult=$3 last; rewrite "^/plus/view-([0-9]+)-([0-9]+)-([0-9]+)\.html$" /plus/view.php?arcID=$1&pageno=$2&totalresult=$3 last; rewrite "^/tags\.html$" /tags.php last; rewrite "^/tag/([^\.]+)\.html$" /tags.php?/$1 last;
b) 重载 Nginx 配置
保存配置文件后,在SSH中执行以下命令使配置生效:
nginx -s reload # 或者 systemctl reload nginx
第二步:配置织梦CMS后台
服务器配置完成后,还需要在织梦后台进行设置。
-
登录织梦后台:
你的域名/dede/ -
进入“系统” -> “系统基本参数”:
-
修改核心设置:
- 是否使用伪静态:选择 “是”。
- 栏目默认页命名规则:通常建议设置为
default.html。 - 文章命名规则:可以根据需要设置,
arc-{aid}-{typedir}-{typeid}-{click}-{title}-{ptime}.html。{aid}: 文章ID{typedir}: 栏目目录{typeid}: 栏目ID{click}: 点击量{title}: 文章标题(会进行拼音或字符转换){ptime}: 发布时间
-
进入“核心” -> “栏目管理”:
- 选择任意一个栏目,点击“更改”。
- 在“栏目选项”中,勾选“使用动态页”。
- 点击“确定”保存。
- 重要:你需要对你网站所有栏目都进行此操作,新建栏目时也要记得勾选。
-
进入“核心” -> “发布” -> “批量更新文档HTML”:
- 这一步是让织梦根据你新的伪静态规则,更新所有已生成内容的链接。
- 选择“所有栏目”,然后点击“开始执行”。
- 系统会重新生成所有页面的链接,使其符合伪静态的格式。
第三步:测试与验证
完成以上所有步骤后,你的网站伪静态就设置成功了,现在需要测试一下是否生效。
- 访问首页:在浏览器中访问
你的域名/index.html,如果能正常打开,说明首页伪静态成功。 - 访问栏目页:访问
你的域名/plus/list-1.html(1是一个栏目ID),如果能正常显示该栏目的文章列表,说明栏目页伪静态成功。 - 访问文章页:访问
你的域名/plus/view-1-1.html(1-1是一个文章ID和页码),如果能正常打开文章内容,说明文章页伪静态成功。
如果无法访问,请检查:
- URL拼写错误:确保
.html后缀没有拼错。 - 服务器配置:检查
.htaccess(Apache) 或 Nginx 配置文件是否有语法错误,并确保已重载/重启服务器。 - 后台设置:回到后台检查“系统基本参数”中的“是否使用伪静态”是否为“是”。
- 栏目设置:检查所有栏目是否都勾选了“使用动态页”。
- 目录权限:确保Web服务器用户有权限读写相关目录。
常见问题与解决方案
-
Q: 设置伪静态后,网站后台登录不了了?
- A: 这是因为后台的登录页面也被重定向了,检查你的
.htaccess文件,确保它没有重写/dede/目录下的文件,你可以在.htaccess中添加一条规则来排除/dede/目录:<IfModule mod_rewrite.c> RewriteEngine On # 排除 /dede/ 目录 RewriteRule ^(dede)/.* - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [QSA,PT,L] </IfModule>
- A: 这是因为后台的登录页面也被重定向了,检查你的
-
Q: 为什么我设置的规则不生效?
- A: 1. 检查服务器是否支持,2. 检查规则路径是否正确,特别是
index.php的位置,3. 清除浏览器缓存或使用无痕模式访问,4. 查看服务器错误日志,通常能找到线索。
- A: 1. 检查服务器是否支持,2. 检查规则路径是否正确,特别是
-
Q: 织梦自带的伪静态规则和我网站的不一样,能用吗?
- A: 我上面提供的规则是通用性最强的,能处理绝大多数情况,织梦后台可能会提供一些旧的规则,如果你的网站结构特殊,可以尝试使用官方规则,但通常上面提供的规则已经足够。
希望这份详细的教程能帮助你成功为织梦网站配置伪静态!如果遇到问题,可以仔细检查每一步,特别是服务器配置和后台设置这两部分。
