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

在cPanel中为Laravel项目配置子目录访问及404问题解决

Laravel项目配置子目录访问(steveprojects.com/realestate/)解决方案

以下是解决404错误并实现子目录访问的具体步骤:

1. 修正index.php的路径引用

你当前的index.php中路径指向可能存在错误,需根据Laravel项目的实际存放位置调整:
假设你的Laravel项目根目录位于public_html的同级目录(例如public_html/../laravel-realestate),将index.php中的路径修改为:

// 维护模式文件路径
if (file_exists($maintenance = __DIR__.'/../laravel-realestate/storage/framework/maintenance.php')) {
    require $maintenance;
}

// 自动加载文件路径
require __DIR__.'/../laravel-realestate/vendor/autoload.php';

// 应用启动文件路径
$app = require_once __DIR__.'/../laravel-realestate/bootstrap/app.php';

核心是让index.php能正确找到Laravel项目的核心文件,若项目存放位置不同,对应调整../laravel-realestate为实际路径。

2. 配置子目录下的.htaccess文件

在public_html/realestate目录下的.htaccess中添加RewriteBase规则,确保请求能正确转发到Laravel入口:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
    # 指定子目录为Rewrite基准路径
    RewriteBase /realestate/

    # 处理授权头
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # 移除末尾斜杠(非目录请求)
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # 所有非文件/目录请求转发到index.php
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

3. 设置Laravel环境变量

修改Laravel项目根目录下的.env文件,更新APP_URL为子目录地址:

APP_URL=https://steveprojects.com/realestate

这会确保Laravel生成的路由链接、资源路径都自动带上子目录前缀。

4. 确认路由配置

确保Laravel路由未硬编码域名,使用框架的路由辅助函数生成链接:

// routes/web.php
Route::get('/', function () {
    return view('welcome');
})->name('home');

Route::get('/upcoming-projects', function () {
    return view('upcoming-projects');
})->name('upcoming-projects');

访问steveprojects.com/realestate/upcoming-projects时,就会匹配到上述路由。

5. 服务器配置检查

Apache环境

  • 确保mod_rewrite模块已启用
  • 在虚拟主机配置中,设置public_html目录的AllowOverride All,确保.htaccess规则生效:
    <Directory /path/to/your/public_html>
        AllowOverride All
    </Directory>
    

Nginx环境

在你的Nginx虚拟主机配置中添加子目录的转发规则:

location /realestate {
    try_files $uri $uri/ /realestate/index.php?$query_string;
}

修改完成后重启Apache或Nginx服务。


内容的提问来源于stack exchange,提问作者Steve Djvoskill Waweru

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:35:03