在Bluehost部署Laravel Nova项目后访问域名为何出现「Index of」页面?
问题根因
访问域名展示「Index of/」目录列表,是Apache服务器未匹配到站点默认入口文件触发的目录索引响应。结合Bluehost共享主机部署Laravel Nova的常见场景,按以下优先级排查:
排查操作清单
- 核对域名绑定路径
Laravel/Nova的应用入口、公开静态资源全部存放在项目的public子目录。若域名直接绑定到项目根目录(即包含app、config、routes、vendor等文件夹的层级),服务器会直接遍历展示该目录下的文件,触发「Index of/」页面。
调整方式:- 拥有目录管理权限时,直接将域名指向项目下的
public目录 - 共享主机权限受限无法修改绑定路径时,在当前域名指向的项目根目录新建
.htaccess文件,配置规则将所有请求转发至public目录
- 拥有目录管理权限时,直接将域名指向项目下的
- 关闭目录索引开关
若Apache启用了Indexes模块,在未匹配到默认入口时会自动展示目录文件列表。需在站点对应.htaccess文件中添加配置关闭该功能:Options -Indexes - 校验入口文件权限
检查public/index.php的文件权限设置为644,文件所属用户组与站点运行权限保持一致,避免服务器因无读取权限无法识别入口文件 - 补全伪静态规则
Laravel依赖mod_rewrite模块解析路由,Bluehost默认配置缺失对应规则时会导致请求无法正确转发至index.php。需在.htaccess中写入官方标准重写规则:<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # 兼容授权头传递 RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # 路由重定向至入口文件 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
![问题示例截图]
所有配置调整完成后,清空Bluehost端CDN缓存、浏览器本地缓存后重试访问即可。
内容的提问来源于stack exchange,提问作者BionicIntel
相关产品推荐
相关产品推荐

