apache实现cms伪静态需三步:一是启用mod_rewrite模块并设置allowoverride all;二是在根目录配置.htaccess文件,用rewriteengine和rewriterule将/article/123.html映射为index.php?s=article/123;三是cms后台开启伪静态并输出对应格式链接,确保前后端一致。

Apache 通过 URL 重写实现 CMS 系统伪静态,核心是让动态请求(如 index.php?c=article&id=123)被服务器自动映射为更友好的静态路径(如 /article/123.html),同时保持后端逻辑不变。整个过程分三步:确保 Apache 支持重写、配置规则文件、CMS 后台协同设置。
确认 Apache 已启用 mod_rewrite 模块
这是前提。若未开启,所有 .htaccess 规则都不会生效。
- 打开
httpd.conf(通常在 Apache 安装目录的conf/下) - 查找
#LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的# - 再查找
<directory></directory>块中对应网站根目录的配置段,确认包含:Options FollowSymLinks AllowOverride All
若为
AllowOverride None,需改为All,否则.htaccess文件会被忽略 - 重启 Apache 服务使配置生效
在网站根目录创建或编辑 .htaccess 文件
该文件必须与 index.php 同级,且无文件名(仅扩展名)。常见写法如下(以通用 ThinkPHP/PbootCMS 类型为例):
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?s=$1 [QSA,PT,L]
</ifmodule>
说明:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
!-d和!-f表示“如果不是真实存在的目录或文件”,才触发重写,避免干扰静态资源(如/css/style.css) -
s=$1将路径部分作为参数传给index.php,由框架解析路由 -
[QSA,PT,L]中QSA保留原始查询参数,PT传递给下一个处理器,L表示最后一条规则
若 CMS 使用不同入口或部署在子目录(如 /cms/),需调整:
- 添加
RewriteBase /cms/ - 或将
RewriteRule改为RewriteRule ^(.*)$ /cms/index.php?s=$1 [QSA,PT,L]
CMS 后台必须同步开启并匹配伪静态模式
服务器规则只是“管道”,CMS 必须主动输出伪静态格式的链接,否则页面内跳转仍是动态地址。
- 登录后台,找到「伪静态设置」或「SEO 设置」类选项(不同系统名称略有差异)
- 开启伪静态开关,并选择或自定义规则,例如:
- 文章页:
/news/{id}.html - 栏目页:
/category/{classid}.html
- 文章页:
- 保存后,检查前台生成的
<a href></a>链接是否已变成目标格式 - 若仍显示
index.php?...,可能是缓存未更新或模板未调用伪静态函数,需清空缓存或检查模板调用逻辑
不复杂但容易忽略










