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

如何从htaccess的Rewrite重写规则中排除test子文件夹的匹配?

问题原因

现有重写规则未排除已存在的子目录请求,test子目录的访问请求会被规则匹配尝试重写为对应.php文件,匹配失败就触发404报错。

调整后的完整.htaccess规则
RewriteEngine On
# 排除test子文件夹的所有重写规则匹配
RewriteRule ^test(/.*)?$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
规则说明
  • 新增的RewriteRule ^test(/.*)?$ - [L]会匹配所有test子目录下的请求,命中后直接停止后续所有重写规则的匹配,完全不干扰test目录的正常访问
  • 原有规则全部保留,不影响原有的.php后缀隐藏功能,仍然可以通过www.abcwebsite.com/file正常访问file.php
  • 修改后测试前请先清空浏览器301永久重定向缓存,避免之前的缓存跳转影响测试结果
  • 如果后续需要排除其他子目录,可按相同格式新增规则即可,比如要排除admin目录就加一行RewriteRule ^admin(/.*)?$ - [L]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:27:05