仅将根目录index.php重定向至根路径的.htaccess配置方案
仅重定向根目录index.php的解决方案
你的问题出在之前添加的规则会匹配所有路径下的index.php(包括/admin/index.php),所以干扰了后台登录。要实现仅根目录的index.php重定向到根域名,需要精准匹配根目录的请求,同时避免影响内部跳转和子目录。
正确的.htaccess规则
添加以下规则到你的配置中,位置要放在强制HTTPS的规则之后,添加末尾斜杠的规则之前:
# 仅重定向根目录的index.php至根目录 RewriteCond %{THE_REQUEST} ^GET\ /index\.php [NC] RewriteRule ^index\.php$ / [R=301,L,NE]
规则说明
RewriteCond %{THE_REQUEST} ^GET\ /index\.php:只匹配用户实际发起的GET请求是/index.php的情况,避免DirectoryIndex的内部跳转(比如访问/时服务器内部会转到index.php)导致的循环重定向。RewriteRule ^index\.php$ /:精准匹配根目录下的index.php(^表示开头,$表示结尾,确保不会匹配/admin/index.php这类子目录文件),重定向到根域名/。[R=301,L,NE]:R=301表示永久重定向(SEO友好),L表示执行完这条规则后停止后续规则,NE表示不转义URL中的特殊字符。
测试建议
测试阶段可以先把R=301改成R=302(临时重定向),避免浏览器缓存301规则后难以修改,确认功能正常(根目录index.php重定向正常,后台/admin/不受影响)后再改回301。
内容的提问来源于stack exchange,提问作者Cosmin
相关产品推荐
相关产品推荐

