Apache配Laravel虚拟主机不报403的关键是:DocumentRoot必须指向public目录,且对应目录块中需配置AllowOverride All,否则.htaccess失效导致路由404;同时要启用rewrite模块并确保配置已激活。
Apache怎么配Laravel虚拟主机不报403
直接给结论:不是Laravel的问题,是Apache没把
指向
目录,且没开
。默认用
只是开发捷径,真要模拟生产环境就得走Web服务器配虚拟主机。
常见错误现象:
或访问首页显示目录列表(没走
)。
确保
设为项目根目录下的
路径,比如
,不是
对应
块里必须有
,否则
不生效,路由全404
确认
已执行,且Apache配置里
没被注释
如果用macOS或Ubuntu,注意
下启用的配置是否用
激活了
Nginx配Laravel本地站点老跳404
核心原因:Nginx不像Apache自动读
,必须手动把Laravel的重写规则写进server块,漏掉就只认
,其他URL全挂。
使用场景:你改了
、用了Vue Router history模式、或单纯想让
这种路径不带
前缀。
location块必须包含
,这是Laravel官方唯一认可的重写逻辑
指令要指向
目录,不是项目根目录;若用
,路径末尾斜杠和拼接逻辑极易出错,优先选
PHP-FPM的
必须写成
,否则
会错,导致
等辅助函数失效
为什么
不能当正式访问入口
因为它是PHP内置服务器,单线程、无静态文件缓存、不支持HTTPS、无法处理并发请求——它连“能用”都勉强,更别说“该用”。
Laravel 13.2.0
PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。
下载
性能影响:压测下QPS通常卡在5–10,而Apache/Nginx+PHP-FPM轻松过百;兼容性影响:不识别
里的
用于生成绝对URL,邮件、API响应里的链接会错。
开发阶段图省事可以用,但一旦涉及前端资源加载、跨域、队列监听、WebSocket,立刻崩
浏览器访问
时,所有相对路径(如
)会被解析成
,而内置服务器不会自动映射到
,常导致404
如果你在
里写了
,但实际用
访问,生成的密码重置链接就是错的
Windows上hosts和vhost配好还是打不开myapp.test
最常被忽略的一点:Windows防火墙或杀毒软件会拦截非80/443端口的本地HTTP请求,尤其当你把Apache/Nginx配成8080或8001这类端口时。
另一个隐蔽坑:Chrome/Edge对
域名做了强制HTTPS重定向(因为ICANN把
划为保留顶级域),哪怕你没配SSL,浏览器也会先发
,然后失败。
换用
或
(注意
需配HTTPS,否则现代浏览器拒接)
检查
里有没有多余空格或中文字符,Windows hosts文件对格式极其敏感
用
绕过浏览器,确认是服务没起来,还是浏览器拦截
如果用Docker或WSL2,
在Windows宿主机上可能不指向容器内网,得查
里WSL2的IP再绑定
复杂点永远在路径和权限链上:从hosts → DNS解析 → Web服务器监听 → DocumentRoot指向 → .htaccess/Nginx重写 → PHP执行权限 → storage/logs写入权限,漏一环就静默失败。
DocumentRootpublic/AllowOverride Allphp artisan serveForbidden You don't have permission to access this resource.index.phpDocumentRootpublic/var/www/myapp/public/var/www/myappAllowOverride All.htaccessa2enmod rewriteLoadModule rewrite_module/etc/apache2/sites-available/a2ensite.htaccessindex.phpAPP_URL/loginindex.phptry_files $uri $uri/ /index.php?$query_string;rootpublicaliasrootfastcgi_param SCRIPT_FILENAME$realpath_root$fastcgi_script_name$_SERVER['SCRIPT_FILENAME']storage_path()php artisan serve.envAPP_URLhttp://127.0.0.1:8000/css/app.csshttp://127.0.0.1:8000/css/app.csspublic/css/.envAPP_URL=http://myapp.testartisan serve.test.testhttps://myapp.test.localhost.dev.devC:\Windows\System32\drivers\etc\hostscurl -v http://myapp.localhostlocalhostipconfig