Laravel Valet本地网络共享返回404错误排查求助
Laravel Valet本地网络共享访问404问题解决方案
问题概述
- 本地通过
my-app.test可正常访问Laravel项目 - 使用
127.0.0.1/my-app.test或局域网IP192.168.31.166/my-app.test访问时触发404错误,HTTP/HTTPS模式均存在该问题 - 已按官方文档完成本地网络共享配置步骤
当前valet.config配置
server { listen 80 default_server; #listen VALET_LOOPBACK:80; # valet loopback root /; charset utf-8; client_max_body_size 128M; location /41c270e4-5535-4daa-b23e-c269744c2f45/ { internal; alias /; try_files $uri $uri/; } location / { rewrite ^ "/Users/USERNAME/.composer/vendor/laravel/valet/server.php" last; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } access_log off; error_log "/Users/USERNAME/.config/valet/Log/nginx-error.log"; error_page 404 "/Users/USERNAME/.composer/vendor/laravel/valet/server.php"; location ~ [^/]\.php(/|$) { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass "unix:/Users/USERNAME/.config/valet/valet.sock"; fastcgi_index "/Users/USERNAME/.composer/vendor/laravel/valet/server.php"; include fastcgi_params; fastcgi_param SCRIPT_FILENAME "/Users/USERNAME/.composer/vendor/laravel/valet/server.php"; fastcgi_param PATH_INFO $fastcgi_path_info; } location ~ /\.ht { deny all; } }
问题原因
Valet默认依赖域名主机头匹配路由到对应项目目录,直接用IP+域名后缀的路径访问时,Valet的server.php无法正确解析请求对应的项目根目录。
修复步骤
1. 启用回环地址监听
取消配置中#listen VALET_LOOPBACK:80;的注释,修改为:
listen VALET_LOOPBACK:80;
这一步让Valet监听回环地址,确保IP请求能被正确捕获。
2. 传递正确的主机头参数
在location ~ [^/]\.php(/|$)代码块中添加以下参数,确保Valet能识别请求的主机信息:
fastcgi_param HTTP_HOST $host;
3. 重启Valet服务
执行命令生效配置:
valet restart
4. 验证访问
- 局域网设备确保和主机在同一网络,访问
http://192.168.31.166会显示Valet站点列表,点击对应项目即可正常访问 - 若要直接用域名访问,可在局域网设备的hosts文件中添加映射:
192.168.31.166 my-app.test
替代方案:使用Valet内置共享命令
如果配置调整无效,直接执行以下命令生成临时共享链接,局域网设备可通过该链接访问项目:
valet share my-app.test
内容的提问来源于stack exchange,提问作者doctibby
相关产品推荐
相关产品推荐

