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

GoDaddy服务器仅根路由可用,非根路由返回404问题求助

GoDaddy cPanel共享主机路由配置问题解决

问题背景

在GoDaddy Deluxe Linux Hosting with cPanel主机上配置基础路由时,仅根路径(/)可正常访问,访问带路径的URL(如/test)时返回Not Found。服务器未执行index.php中的路由逻辑,而是直接查找对应文件/文件夹,当前配置的.htaccess未生效,且无Apache全局配置权限。

当前配置

.htaccess 文件

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php

index.php 代码

<?php

$request = $_SERVER['REQUEST_URI'];
$viewDir = '/';

switch ($request) {
    case '':
    case '/':
        require __DIR__ . $viewDir . 'home.html';
        break;

    case '/test':
        require __DIR__ . $viewDir . 'boost.html';
        break;
}

解决步骤

1. 修正.htaccess规则

GoDaddy的Apache环境需要明确将请求路径传递给index.php,修改后的.htaccess如下:

RewriteEngine On
# 排除真实存在的文件和目录
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 转发所有请求到index.php,保留请求路径和查询参数
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
  • !-d规则排除真实存在的目录,避免误转发
  • index.php/$1将请求路径作为PATH_INFO传递给index.php
  • [L]标记表示执行完当前规则后停止后续重写
  • [QSA]标记保留原请求的查询字符串

2. 检查.htaccess的位置与权限

  • 确保.htaccess文件放在网站根目录(与index.php同级)
  • 文件权限设置为644(可通过cPanel文件管理器修改)

3. 调整index.php的路径处理逻辑

部分情况下$_SERVER['REQUEST_URI']会包含查询参数,导致switch匹配失败,同时添加默认case处理404场景:

<?php
// 去除查询参数,仅保留路径部分
$request = strtok($_SERVER['REQUEST_URI'], '?');
$viewDir = '/';

switch ($request) {
    case '':
    case '/':
        require __DIR__ . $viewDir . 'home.html';
        break;
    case '/test':
        require __DIR__ . $viewDir . 'boost.html';
        break;
    default:
        http_response_code(404);
        require __DIR__ . $viewDir . '404.html';
        break;
}

4. 确认mod_rewrite模块启用

GoDaddy共享主机默认启用mod_rewrite,若仍有问题,可通过cPanel的MultiPHP INI Editor或联系客服确认模块状态。

5. 清除缓存测试

修改配置后,使用浏览器隐私模式或清除缓存后测试,避免旧缓存影响结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:40:16