You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助:仅当cms目录存在时将.html请求重写为.php(非REQUEST条件)

解决.html请求重写为.php(仅当cms目录存在时生效)

方案一:修正RewriteCond的路径判断

你之前用的RewriteCond /cms -d是按服务器系统根路径判断的,不是网站的文档根目录,所以判断逻辑出错了。改成用Apache内置变量%{DOCUMENT_ROOT}指向网站根目录,就能准确检测cms目录是否存在:

RewriteEngine On
# 检测网站根目录下的cms目录是否存在
RewriteCond %{DOCUMENT_ROOT}/cms -d
# 将所有.html结尾的请求重写为对应.php文件
RewriteRule ^(.*)\.html$ /$1.php [L,QSA]

方案二:用指令实现(更直观)

如果想用指令,得确保你的Apache版本是2.4及以上(2.4才支持这个指令),正确写法如下:

RewriteEngine On
<If "-d %{DOCUMENT_ROOT}/cms">
    RewriteRule ^(.*)\.html$ /$1.php [L,QSA]
</If>

关键说明

  • %{DOCUMENT_ROOT}是Apache自带的变量,对应你网站的根目录,这样判断不会受服务器系统路径干扰。
  • 正则表达式^(.*)\.html$和你原来的写法效果一致,但更简洁。
  • [L,QSA]标记:L表示匹配这条规则后就停止后续规则处理;QSA会保留原请求的查询参数,比如article.html?cid=5会被重写成article.php?cid=5。

内容的提问来源于stack exchange,提问作者hellnow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 12:33:25