如何调整.htaccess规则实现所有页面请求均重定向到index.php
这个现象是Apache的*MultiViews(内容协商)*功能导致的。当该功能开启时,访问example.com/p/home路径,Apache会自动搜索同目录下的同名资源(比如home.php、home.html),匹配到存在的home.php后会直接返回内容,不会触发后续的重写规则。
解决方法
修改/p/目录下的.htaccess文件,添加关闭MultiViews的配置即可,调整后的完整规则如下:
# 关闭内容协商,禁止自动匹配文件后缀 Options -MultiViews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ /p/index.php [L,QSA]
可选调整
- 如果你需要所有请求(包括已存在的文件、目录请求)都强制由
index.php提供服务,直接删除两条RewriteCond规则即可,调整后重写部分为:
RewriteEngine on RewriteRule ^.*$ /p/index.php [L,QSA]
- 大部分虚拟主机环境下
.htaccess规则修改后实时生效,如果是独立服务器建议重启Apache服务确保规则生效。
内容的提问来源于stack exchange,提问作者user1864797
相关产品推荐
相关产品推荐

