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

在cPanel根目录部署Laravel网站遇Index of /问题求助

Laravel上传cPanel根目录后“Index of /”问题解决方法

问题核心

把Laravel整个项目直接传到cPanel的public_html目录后,服务器找不到默认入口文件,就会显示目录列表(即“Index of /”),哪怕你已经加了.htaccess,也可能因为规则冲突或配置问题没生效。

解决步骤

1. 替换根目录的.htaccess为正确规则

把你当前的.htaccess代码替换成下面的版本,规则简洁无冲突:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # 重定向所有请求到public目录下的入口文件
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

注:Laravel 5.x及以上版本用这个规则足够让所有请求指向public/index.php,无需额外复杂条件。

2. 强制服务器优先加载index.php

登录cPanel,找到目录索引(Directory Indexes)工具,进入public_html目录的设置页面,把index.php移到最顶部,确保服务器优先尝试加载这个文件,而非列出目录内容。

3. 确认mod_rewrite模块已启用

在cPanel的Apache模块(Apache Modules)中,找到mod_rewrite并确保它已被勾选。大多数主机默认开启,若未开启,勾选后保存即可。

更规范的优化方案(可选)

为了安全和符合Laravel最佳实践,建议:

  • 把Laravel项目所有文件(除public目录)上传到public_html的上级目录(比如laravel_project)
  • 把public目录内的所有文件和文件夹移动到public_html根目录
  • 修改public_html/index.php里的路径,指向上级目录的依赖文件:
// 原路径
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

// 修改后(假设上级目录是laravel_project)
require __DIR__.'/../laravel_project/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel_project/bootstrap/app.php';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:25:24