仅根目录不存在路径重定向至redirect.php的.htaccess配置问题
修改方案
你只需要调整最后一条重定向规则的匹配范围,限制其仅作用于根目录下的请求即可,修改后的完整.htaccess内容如下:
# Disabling directory listing Options -Indexes -MultiViews +FollowSymLinks # Redirecting any traffic that doesn't exist to the index.php RewriteEngine on RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA] RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] RewriteRule ^ %1 [R,L] # 仅匹配根目录下不存在的文件请求 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]*)$ /redirect.php?path=$1 [NC,L,QSA]
核心修改说明
- 把原规则的
^(.*)$匹配模式替换为了^([^/]*)$:[^/]*代表匹配不包含斜杠/的字符串,只有根目录下的路径(比如/test.html、/abc)会命中该规则,子目录下的路径(比如/sub/test.html、/sub/abc)因为路径中包含斜杠,不会匹配这条规则,会直接返回服务器默认的404错误页。 - 原有其他规则逻辑完全保留,不会影响php后缀隐藏、现有文件访问的功能。
内容的提问来源于stack exchange,提问作者Beth
相关产品推荐
相关产品推荐

