You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

纯原生PHP路由问题求助:访问指定路径返回错误

原生PHP路由问题解决方案

核心问题:请求URI包含项目前缀

你的项目放在XAMPP的htdocs/test文件夹下,访问路径比如http://localhost/test/product时,$_SERVER['REQUEST_URI']的值是/test/product,而你的switch判断的是/product,自然匹配失败返回404。

解决步骤:

  1. 处理请求URI,移除项目前缀
    修改index.php中的代码,先提取去除项目前缀后的路径:
<?php
// 获取项目根目录的URI前缀,这里是/test
$basePath = '/test';
$request = $_SERVER['REQUEST_URI'];

// 移除前缀,得到纯净的路由路径
if (str_starts_with($request, $basePath)) {
    $request = substr($request, strlen($basePath));
}

// 如果移除后为空,说明访问的是根路径
if ($request === '') {
    $request = '/';
}

switch ($request) {
    case "/":
        require "home.php";
        break;
    case "/dashboard":
        require "dashboard.php";
        break;
    case "/product":
        require "product.php";
        break;
    default:
        http_response_code(404);
        // 可按需添加404页面引入
        // require "404.php";
        break;
}
?>
  1. 确认.htaccess的位置
    确保.htaccess文件放在htdocs/test文件夹下,和index.php同级,不要放在htdocs根目录。

  2. 开启XAMPP的重写模块

  • 打开XAMPP控制面板,点击Apache的Config按钮,选择httpd.conf
  • 找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的#注释
  • 保存文件,重启Apache服务
  1. 检查Apache的AllowOverride设置
    在httpd.conf中找到对应项目目录的配置(或全局Directory配置),确保AllowOverride All,否则.htaccess不会生效:
<Directory "你的XAMPP路径/htdocs/test">
    AllowOverride All
    Require all granted
</Directory>

如果找不到单独的test目录配置,找到<Directory "你的XAMPP路径/htdocs">,把里面的AllowOverride None改成AllowOverride All,然后重启Apache。

测试验证

修改完成后重启Apache,访问http://localhost/test应加载home.php,http://localhost/test/product加载product.php,错误路径返回404。

内容的提问来源于stack exchange,提问作者karlo292

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 15:07:09