如何通过.htaccess将根目录及不存在路径重写至/index/并隐藏跳转
问题原因
根路径/确实会被判定为存在的有效目录,所以无法命中你现有规则中!-d的条件,导致规则不触发。
调整方案
在原有规则前新增一条专门匹配根路径的重写规则即可,完整规则如下:
RewriteEngine On # 匹配根路径空请求,内部重写至index目录 RewriteRule ^$ /index/ [L] # 原有逻辑:处理不存在的文件/目录请求 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /index/$1 [L]
规则说明
- 新增的根路径匹配规则属于内部重写,不会触发用户侧地址跳转,符合掩蔽重写的要求
- 原有对不存在的文件、目录的重写逻辑完全保留,不影响folderA、folderB等存在的目录/文件的正常访问
- 如果你需要将根路径请求重写至index目录下的特定入口文件(比如index.php),可以把第一条规则修改为
RewriteRule ^$ /index/index.php [L]即可
内容的提问来源于stack exchange,提问作者fab
相关产品推荐
相关产品推荐

