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

多级目录下.htaccess去除URL文件扩展名失效问题求助

修复多级目录下的URL扩展名去除规则

嘿,我来帮你搞定这个问题!你当前的规则只覆盖了最多两级目录的场景,所以三级及以上的多级目录URL就失效了。咱们换个更通用的写法,能适配任意层级的路径,同时还能兼容带或不带末尾斜杠的访问方式。

修正后的完整.htaccess代码

RewriteEngine On

# 强制跳转至HTTPS(保留你原有的规则)
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 如果请求的是真实存在的文件或目录,直接跳过后续规则,避免误处理
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# 匹配任意层级的URL(支持带/不带末尾斜杠),自动添加.php扩展名
RewriteRule ^(.*?)/?$ $1.php [L]

关键调整说明

  • 原规则的问题:你之前写的^([^/]+)/$和^([^/]+)/([^/]+)/$分别只能匹配1级和2级目录的路径,无法覆盖folder/folder/filename这类多级场景。
  • 通用匹配规则:^(.*?)/?$中的.*?是非贪婪匹配,能捕获任意层级的路径(比如folder1/folder2/folder3/filename),/?允许URL末尾带或不带斜杠,适配不同的访问习惯。
  • 排除真实文件/目录:新增的两个RewriteCond会跳过对真实存在的文件和目录的处理,避免把example.com/image.jpg这类真实文件错误地重定向到image.jpg.php。

测试注意事项

因为301重定向会被浏览器缓存,测试新规则前建议清空浏览器缓存,或者使用隐私/无痕窗口访问,避免缓存的旧规则影响测试结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:07:51