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

Apache Rewrite规则添加物理文件与目录例外的技术问询

解决Rewrite规则的物理文件/目录例外问题

直接给你写好带例外条件的完整规则,完美适配你的需求:

# 排除存在的物理目录和物理文件
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# 仅当上述条件都满足时,执行重写
RewriteRule ^([A-Za-z0-9-]+)/?$ $1.html [L]

每条规则的作用解释:

  • RewriteCond %{REQUEST_FILENAME} !-d:当请求的路径不是服务器上存在的物理目录时,才继续往下走。!-d里的!表示“否定”,-d是Apache的内置检测符,用来判断请求路径是否为一个真实存在的目录。
  • RewriteCond %{REQUEST_FILENAME} !-f:这条和上面的逻辑类似,当请求的路径不是服务器上存在的物理文件时,才进入后续的重写规则。-f用来检测请求路径是否为一个真实存在的普通文件。
  • 两条RewriteCond是“且”的关系,只有同时满足(既不是存在的目录,也不是存在的文件),才会触发后面的RewriteRule,把example.com/anything/这类请求重写到example.com/anything.html。

实际场景验证:

  • 如果你的服务器上有example.com/test/这个物理目录,当用户请求example.com/test/时,第一条RewriteCond就不满足(因为test/是真实存在的目录),所以不会执行重写,直接加载该目录下的索引页(比如index.html)。
  • 如果服务器上不存在test/目录,也不存在test这个物理文件,那请求example.com/test/就会被正常重写到example.com/test.html。
  • 如果用户直接请求一个存在的物理文件(比如example.com/contact.txt),第二条RewriteCond会判定该路径是真实文件,所以不会触发重写,直接返回该文件内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:02:16