Laravel应用通过域名访问显示文件结构 无法展示站点内容如何解决
Laravel访问显示目录结构解决方法
出现该问题的核心原因是站点根目录未指向Laravel项目的public目录,同时伪静态配置缺失Laravel必需的重写规则,可按以下步骤调整:
1. 修改站点根目录配置
在Web服务器(Apache/Nginx)的站点配置中,将站点根目录(DocumentRoot)指向Laravel项目下的public文件夹,例如项目存放在/var/www/laravel路径下,则根目录需调整为/var/www/laravel/public。
该操作是Laravel运行的默认要求,同时可避免.env等敏感文件直接暴露在公网。
2. 替换正确的.htaccess配置
你当前的配置仅实现了HTTP跳HTTPS,缺少Laravel必需的入口重定向规则,将public目录下的.htaccess替换为以下内容:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # 保留你原有HTTP跳转HTTPS规则 RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/$1 [R,L] # 处理授权头信息 RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # 静态文件直接访问,其余请求指向入口文件 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
3. 检查Apache必备配置
确保Apache已开启mod_rewrite模块,同时站点目录配置中开启了AllowOverride权限:
<Directory /你的Laravel项目完整路径/public> Options FollowSymLinks AllowOverride All Require all granted </Directory>
修改完所有配置后重启Apache服务即可生效。
补充说明:如果使用的是共享虚拟主机,无权限修改站点根目录配置,可将
public目录下的所有文件剪切到项目根目录,再修改根目录下index.php的路径引用:
把__DIR__.'/../vendor/autoload.php'改为__DIR__.'/vendor/autoload.php'
把__DIR__.'/../bootstrap/app.php'改为__DIR__.'/bootstrap/app.php'
同时将上述.htaccess文件放到项目根目录即可。
内容的提问来源于stack exchange,提问作者Philly
相关产品推荐
相关产品推荐

