DedeCMS伪静态设置需完成后台与服务器两步配置,先在系统参数中开启伪静态功能,再通过Apache的.htaccess或Nginx的配置文件编写重写规则,确保URL由动态转为静态形式,同时注意RewriteBase路径、服务器模块启用、规则兼容性及缓存清理,避免404或冲突问题。

DedeCMS的伪静态设置,简单来说,就是让你的网站URL看起来更“干净”、更友好,从原本带着问号和各种参数的动态链接(比如
view.php?aid=123
view-123-1.html
.htaccess
nginx.conf
要让DedeCMS跑起来伪静态,我们需要分两步走,一步在CMS内部,一步在服务器外部。这就像给网站穿件新衣服,得先选好款式,再找裁缝量身定做。
DedeCMS后台设置 进入你的DedeCMS后台,找到“系统”菜单下的“系统基本参数”。在左侧导航栏里,点击“核心设置”。这里你会看到一个选项,通常是“是否使用伪静态”。你需要把它从“否”改为“是”。 接着,很多DedeCMS版本可能还需要在“生成”菜单里,选择“更新主页HTML”或者“一键更新网站”,确保系统能识别到这个伪静态的切换。当然,这里有个小细节,如果你的网站之前是纯静态的,切换伪静态后,之前生成的静态HTML文件可能需要清理一下,或者确保伪静态规则的优先级更高,避免混淆。我个人经验是,最好在测试环境先跑一遍,确认没问题再上线,毕竟URL结构变化对SEO还是有影响的。
服务器伪静态规则配置 这一步是核心,它决定了服务器如何解析你那些“假装是静态”的URL。不同的服务器环境有不同的配置方式。
Apache服务器(使用.htaccess文件) 如果你的服务器是Apache,并且开启了
mod_rewrite
httpd.conf
.htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 文章页 RewriteRule ^(.*)/view_([0-9]+)_([0-9]+)_([0-9]+).html$ $1/view.php?aid=$2&pre=$3&next=$4 [L] RewriteRule ^(.*)/view_([0-9]+)_([0-9]+).html$ $1/view.php?aid=$2&PageNo=$3 [L] RewriteRule ^(.*)/view_([0-9]+).html$ $1/view.php?aid=$2 [L] # 列表页 RewriteRule ^(.*)/list_([0-9]+)_([0-9]+)_([0-9]+).html$ $1/list.php?tid=$2&totalresult=$3&PageNo=$4 [L] RewriteRule ^(.*)/list_([0-9]+)_([0-9]+).html$ $1/list.php?tid=$2&PageNo=$3 [L] RewriteRule ^(.*)/list_([0-9]+).html$ $1/list.php?tid=$2 [L] # 标签页 RewriteRule ^tags.html$ tags.php [L] RewriteRule ^tags-(.*).html$ tags.php?/$1 [L] # 归档页 RewriteRule ^arclist-(.*).html$ arclist.php?/$1 [L] # 解决老版本DedeCMS动态链接兼容性问题(可选,如果你的链接还存在-htm-格式) RewriteRule ^(.*)-htm-(.*)$ $1.php?$2 [L] </IfModule>
注意
RewriteBase /
www.yourdomain.com/dede/
RewriteBase /dede/
Nginx服务器 Nginx的配置方式与Apache不同,它没有
.htaccess
nginx.conf
vhost
server
location /
location / {
# 尝试直接访问文件或目录,如果不存在,则进行rewrite
try_files $uri $uri/ /index.php?$args;
# DedeCMS伪静态规则
rewrite ^/(.*)/view_([0-9]+)_([0-9]+)_([0-9]+).html$ /$1/view.php?aid=$2&pre=$3&next=$4 last;
rewrite ^/(.*)/view_([0-9]+)_([0-9]+).html$ /$1/view.php?aid=$2&PageNo=$3 last;
rewrite ^/(.*)/view_([0-9]+).html$ /$1/view.php?aid=$2 last;
rewrite ^/(.*)/list_([0-9]+)_([0-9]+)_([0-9]+).html$ /$1/list.php?tid=$2&totalresult=$3&PageNo=$4 last;
rewrite ^/(.*)/list_([0-9]+)_([0-9]+).html$ /$1/list.php?tid=$2&PageNo=$3 last;
rewrite ^/(.*)/list_([0-9]+).html$ /$1/list.php?tid=$2 last;
rewrite ^/tags.html$ /tags.php last;
rewrite ^/tags-(.*).html$ /tags.php?/$1 last;
rewrite ^/arclist-(.*).html$ /arclist.php?/$1 last;
# 兼容老版本DedeCMS的-htm-格式
rewrite ^/(.*)-htm-(.*)$ /$1.php?$2 last;
}配置完Nginx后,记得要
sudo nginx -t
sudo nginx -s reload
在设置DedeCMS伪静态时,我遇到过不少坑,有些问题看起来很玄乎,其实多半是些小细节没到位。这里我总结了一些常见的误区和排查思路,希望能帮你少走弯路。
首先,最常见的误区就是服务器环境问题。比如Apache没开
mod_rewrite
error_log
error.log
.htaccess
其次是规则冲突或不完整。DedeCMS的伪静态规则相对复杂,因为它要处理文章、列表、标签、搜索等多种页面类型。如果你是从网上随便找了一段规则,很可能不适用于你的DedeCMS版本或者你的特定需求。我建议总是从DedeCMS官方论坛或可靠的资源获取最新的规则。另外,如果你的网站根目录还有其他应用(比如WordPress、Discuz!),它们的
.htaccess
再来就是DedeCMS后台设置与缓存问题。有些DedeCMS版本,在开启伪静态后,需要手动更新一下系统缓存或者生成一下HTML。如果这些步骤没做,系统可能还在使用旧的URL生成逻辑。此外,浏览器缓存、CDN缓存也可能捣乱,让你误以为伪静态没生效。所以,每次修改后,清空浏览器缓存,或者用隐身模式访问,甚至清除CDN缓存,都是非常必要的排查步骤。我个人习惯是,改完规则,立刻用
curl -I yourdomain.com/some-pseudo-static-url.html
最后,路径问题。如果DedeCMS安装在子目录,比如
http://www.example.com/cms/
RewriteBase
/cms/
rewrite
/cms
说起伪静态规则,Apache和Nginx虽然目的相同,但语法和实现逻辑差异不小。理解这些差异,能让你在实际操作中更游刃有余。
Apache的.htaccess
Apache的
mod_rewrite
.htaccess
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 如果DedeCMS在子目录,如/dede/,则改为RewriteBase /dede/ # DedeCMS文章页规则: # 例如:/news/view_123_1.html -> /news/view.php?aid=123&PageNo=1 RewriteRule ^(.*)/view_([0-9]+)_([0-9]+)_([0-9]+).html$ $1/view.php?aid=$2&pre=$3&next=$4 [L,QSA] RewriteRule ^(.*)/view_([0-9]+)_([0-9]+).html$ $1/view.php?aid=$2&PageNo=$3 [L,QSA] RewriteRule ^(.*)/view_([0-9]+).html$ $1/view.php?aid=$2 [L,QSA] # DedeCMS列表页规则: # 例如:/list/list_1_1.html -> /list/list.php?tid=1&PageNo=1 RewriteRule ^(.*)/list_([0-9]+)_([0-9]+)_([0-9]+).html$ $1/list.php?tid=$2&totalresult=$3&PageNo=$4 [L,QSA] RewriteRule ^(.*)/list_([0-9]+)_([0-9]+).html$ $1/list.php?tid=$2&PageNo=$3 [L,QSA] RewriteRule ^(.*)/list_([0-9]+).html$ $1/list.php?tid=$2 [L,QSA] # DedeCMS标签页规则: # 例如:/tags-php.html -> /tags.php?/php RewriteRule ^tags.html$ tags.php [L,QSA] RewriteRule ^tags-(.*).html$ tags.php?/$1 [L,QSA] # DedeCMS归档页规则: # 例如:/arclist-2023-01.html -> /arclist.php?/2023-01 RewriteRule ^arclist-(.*).html$ arclist.php?/$1 [L,QSA] # DedeCMS老版本兼容性规则(如果你的网站存在-htm-格式的链接,例如/a/b-htm-c.php?d=e) RewriteRule ^(.*)-htm-(.*)$ $1.php?$2 [L,QSA] # 阻止直接访问某些敏感文件(可选,但推荐) RewriteRule ^data/(.*)$ - [F] RewriteRule ^templets/(.*).php$ - [F] RewriteRule ^member/(.*).php$ - [F] </IfModule>
这里的
[L]
Last
[QSA]
Query String Append
QSA
Nginx的配置规则:
Nginx处理请求的效率更高,但它的配置语法更严格,没有
.htaccess
nginx.conf
server {
listen 80;
server_name yourdomain.com;
root /path/to/your/dedecms; # 你的DedeCMS网站根目录
index index.html index.htm index.php;
location / {
# 如果请求的文件或目录存在,则直接访问
try_files $uri $uri/ /index.php?$args;
# DedeCMS伪静态规则
# Nginx的rewrite规则需要以'/'开头,并且通常使用'last'或'break'
# 'last'表示停止当前location块的匹配,并重新发起内部请求到新的URI
# 'break'表示停止当前rewrite模块的匹配,继续在当前location块中处理新的URI
# 文章页
rewrite ^/(.*)/view_([0-9]+)_([0-9]+)_([0-9]+).html$ /$1/view.php?aid=$2&pre=$3&next=$4 last;
rewrite ^/(.*)/view_([0-9]+)_([0-9]+).html$ /$1/view.php?aid=$2&PageNo=$3 last;
rewrite ^/(.*)/view_([0-9]+).html$ /$1/view.php?aid=$2 last;
# 列表页
rewrite ^/(.*)/list_([0-9]+)_([0-9]+)_([0-9]+).html$ /$1/list.php?tid=$2&totalresult=$3&PageNo=$4 last;
rewrite ^/(.*)/list_([0-9]+)_([0-9]+).html$ /$1/list.php?tid=$2&PageNo=$3 last;
rewrite ^/(.*)/list_([0-9]+).html$ /$1/list.php?tid=$2 last;
# 标签页
rewrite ^/tags.html$ /tags.php last;
rewrite ^/tags-(.*).html$ /tags.php?/$1 last;
# 归档页
rewrite ^/arclist-(.*).html$ /arclist.php?/$1 last;
# 老版本兼容
rewrite ^/(.*)-htm-(.*)$ /$1.php?$2 last;
}
# PHP文件处理
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php-fpm.sock; # 你的PHP-FPM socket路径
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 阻止直接访问敏感目录(推荐)
location ~ /(data|templets|member|install)/ {
deny all;
}
}Nginx的
try_files
以上就是DedeCMS伪静态如何设置?伪静态规则怎么写?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号