在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
相关产品推荐
相关产品推荐

