0

0

DedeCMS伪静态如何设置?伪静态规则怎么写?

煙雲

煙雲

发布时间:2025-09-09 12:27:01

|

1064人浏览过

|

来源于php中文网

原创

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

dedecms伪静态如何设置?伪静态规则怎么写?

DedeCMS的伪静态设置,简单来说,就是让你的网站URL看起来更“干净”、更友好,从原本带着问号和各种参数的动态链接(比如

view.php?aid=123
)变成像静态文件一样的路径(比如
view-123-1.html
)。这背后涉及两块核心操作:首先是DedeCMS后台自身的配置,告诉系统“我要用伪静态了”;其次是服务器端的配置,通常是通过Apache的
.htaccess
文件或者Nginx的
nginx.conf
文件,来告诉服务器“当用户访问这个伪静态地址时,其实是请求了那个动态地址”。理解这两点,设置起来就没那么玄乎了。

解决方案

要让DedeCMS跑起来伪静态,我们需要分两步走,一步在CMS内部,一步在服务器外部。这就像给网站穿件新衣服,得先选好款式,再找裁缝量身定做。

  1. DedeCMS后台设置 进入你的DedeCMS后台,找到“系统”菜单下的“系统基本参数”。在左侧导航栏里,点击“核心设置”。这里你会看到一个选项,通常是“是否使用伪静态”。你需要把它从“否”改为“是”。 接着,很多DedeCMS版本可能还需要在“生成”菜单里,选择“更新主页HTML”或者“一键更新网站”,确保系统能识别到这个伪静态的切换。当然,这里有个小细节,如果你的网站之前是纯静态的,切换伪静态后,之前生成的静态HTML文件可能需要清理一下,或者确保伪静态规则的优先级更高,避免混淆。我个人经验是,最好在测试环境先跑一遍,确认没问题再上线,毕竟URL结构变化对SEO还是有影响的。

  2. 服务器伪静态规则配置 这一步是核心,它决定了服务器如何解析你那些“假装是静态”的URL。不同的服务器环境有不同的配置方式。

    • Apache服务器(使用.htaccess文件) 如果你的服务器是Apache,并且开启了

      mod_rewrite
      模块(通常默认是开的,如果不行需要联系主机商或自己检查
      httpd.conf
      ),你需要在网站根目录下创建一个名为
      .htaccess
      的文件(如果已经有,就编辑它)。把DedeCMS官方提供的或者我们常用的伪静态规则粘贴进去。 举个例子,一个基础的DedeCMS伪静态规则可能长这样:

      <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 /
      这行,如果你的DedeCMS安装在子目录,比如
      www.yourdomain.com/dede/
      ,那么这行需要改为
      RewriteBase /dede/
      。这是一个常被忽略的小细节,却能导致整个伪静态失效。

    • Nginx服务器 Nginx的配置方式与Apache不同,它没有

      .htaccess
      文件,规则直接写在Nginx的配置文件里(通常是
      nginx.conf
      或者网站对应的
      vhost
      配置文件)。找到你的网站
      server
      块,在
      location /
      块中添加伪静态规则。 Nginx的规则通常这样写:

      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
      重载Nginx服务,让新的规则生效。如果Nginx配置有误,网站可能会直接502或500,所以务必小心。

DedeCMS伪静态的常见误区与排查方法

在设置DedeCMS伪静态时,我遇到过不少坑,有些问题看起来很玄乎,其实多半是些小细节没到位。这里我总结了一些常见的误区和排查思路,希望能帮你少走弯路。

首先,最常见的误区就是服务器环境问题。比如Apache没开

mod_rewrite
模块,或者Nginx配置完没重载服务。我见过太多次,用户把规则写好了,DedeCMS后台也开了伪静态,结果页面还是404。这时候,第一步就是检查服务器日志(Apache的
error_log
或Nginx的
error.log
),看有没有关于rewrite的错误信息。如果日志里一片空白,那很可能是模块压根没加载,或者权限问题导致
.htaccess
文件没生效。

其次是规则冲突或不完整。DedeCMS的伪静态规则相对复杂,因为它要处理文章、列表、标签、搜索等多种页面类型。如果你是从网上随便找了一段规则,很可能不适用于你的DedeCMS版本或者你的特定需求。我建议总是从DedeCMS官方论坛或可靠的资源获取最新的规则。另外,如果你的网站根目录还有其他应用(比如WordPress、Discuz!),它们的

.htaccess
文件或Nginx配置也可能有自己的rewrite规则,这很容易导致冲突。排查时,可以尝试只保留DedeCMS的规则,看是否生效,再逐步添加其他应用的规则,找出冲突点。

再来就是DedeCMS后台设置与缓存问题。有些DedeCMS版本,在开启伪静态后,需要手动更新一下系统缓存或者生成一下HTML。如果这些步骤没做,系统可能还在使用旧的URL生成逻辑。此外,浏览器缓存、CDN缓存也可能捣乱,让你误以为伪静态没生效。所以,每次修改后,清空浏览器缓存,或者用隐身模式访问,甚至清除CDN缓存,都是非常必要的排查步骤。我个人习惯是,改完规则,立刻用

curl -I yourdomain.com/some-pseudo-static-url.html
命令,直接从服务器获取HTTP头信息,看返回的状态码是不是200,以及有没有重定向,这比浏览器访问要直接得多。

三虎(3hooCMS)企业建站系统2 SP2
三虎(3hooCMS)企业建站系统2 SP2

本版本为春节前最后版本,主要是改进SP2的BUG以及处理多版本共存问题。V3将在春节后公布开发进度!改进以下功能: 后台帐号admin 密码:3hooCMS 程序版本:3hooCMS V2 SP2修正组件支持,后台提供组件支持设置,无组件环境关闭组件支持也可以使用。 修正默认模版IE6兼容问题。 重写伪静态规则,空间支持伪静态可以后台开启伪静态。 更新双语默认模版。 默认模版重写调用演示!写出最大

下载

最后,路径问题。如果DedeCMS安装在子目录,比如

http://www.example.com/cms/
,那么Apache的
RewriteBase
就必须设置为
/cms/
,Nginx的规则也需要相应调整,在
rewrite
规则前面加上
/cms
。这个错误非常隐蔽,因为通常我们都是在根目录部署,一旦遇到子目录部署,很容易忽略这个细节。

Apache与Nginx服务器的伪静态规则实战

说起伪静态规则,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
,会将原始请求中的查询字符串附加到重写后的URL后面,这对于某些带有额外参数的链接很重要。我个人倾向于加上
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
指令非常重要,它首先

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

245

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

519

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

588

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

244

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

629

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3613

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

53

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

67

2026.01.13

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

48

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go 教程
Go 教程

共32课时 | 5.8万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.2万人学习

nginx浅谈
nginx浅谈

共15课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号