Laravel项目public目录浏览器隐藏、资源管理器可见的问题求助
问题原因与解决方法
核心原因
- Apache的
mod_rewrite模块未开启,导致Laravel默认的.htaccess规则无法解析,触发500内部服务器错误,浏览器表现为public目录“隐藏”。 - 虚拟主机配置中未允许
.htaccess生效(AllowOverride设为None),导致目录规则无法执行。 - 虚拟主机的
DocumentRoot错误指向项目根目录,而非Laravel的public文件夹,违反部署规范引发权限/规则冲突。
解决步骤
开启mod_rewrite模块
打开WAMP管理器,点击左侧Apache菜单,选择Apache Modules,确保rewrite_module处于勾选状态,重启WAMP服务。修正虚拟主机配置
找到WAMP的虚拟主机配置文件(路径示例:wamp64\bin\apache\apacheX.X.X\conf\extra\httpd-vhosts.conf),修改对应虚拟主机条目:<VirtualHost *:80> ServerName your-hostname.local DocumentRoot "C:/wamp64/www/your-laravel-project/public" <Directory "C:/wamp64/www/your-laravel-project/public"> Options Indexes FollowSymLinks MultiViews AllowOverride All Require local </Directory> </VirtualHost>关键修改:
DocumentRoot必须指向Laravel项目的public目录- 将
AllowOverride None改为AllowOverride All
修改后重启WAMP服务。
校验public目录的.htaccess规则
确保public/.htaccess使用Laravel默认规则,若之前修改过可恢复为:<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>若仍有问题,可暂时注释掉
Options -MultiViews -Indexes行测试。调整Windows目录权限
右键public目录,选择「属性」→「安全」,确保当前Windows账号或Everyone用户拥有「读取和执行」「列出文件夹内容」「读取」权限,必要时勾选「完全控制」。
内容的提问来源于stack exchange,提问作者Tammy06
相关产品推荐
相关产品推荐

