如何通过.htaccess与PHP实现根目录index.php承接所有URL请求
实现方案
1. 环境确认
首先确认你的站点使用Apache服务,且已开启mod_rewrite扩展,同时站点目录配置了AllowOverride All(允许.htaccess文件生效)。
2. 配置.htaccess文件
在站点根目录新建.htaccess文件,写入如下规则:
RewriteEngine On # 排除真实存在的文件、目录,避免静态资源无法访问 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 所有请求转发至根目录index.php处理 RewriteRule ^(.*)$ index.php [L,QSA]
规则说明:
!-f:若请求路径对应真实存在的文件,不触发重写!-d:若请求路径对应真实存在的目录,不触发重写[L]:匹配到当前规则后不再执行后续重写规则[QSA]:保留原URL携带的查询参数,转发后仍可通过$_GET获取对应参数值
如果你需要把真实文件、目录的请求也全部交给index.php处理,直接删除上述两个
RewriteCond行即可。
3. PHP端业务实现
配置生效后,你可以直接在根目录的index.php中获取请求路径开发业务逻辑,示例代码如下:
<?php // 获取完整请求URI(包含路径和查询参数) $url = $_SERVER['REQUEST_URI']; // 若只需要路径部分,可通过parse_url拆分 $requestPath = parse_url($url, PHP_URL_PATH); // 后续业务逻辑 // ... ?>
内容的提问来源于stack exchange,提问作者Android Cse
相关产品推荐
相关产品推荐

