跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

Laravel怎么配置虚拟主机_Laravel怎么访问本地项目【解析】

Apache配Laravel虚拟主机不报403的关键是:DocumentRoot必须指向public目录,且对应目录块中需配置AllowOverride All,否则.htaccess失效导致路由404;同时要启用rewrite模块并确保配置已激活。 Apache怎么配Laravel虚拟主机不报403 直接给结论:不是Laravel的问题,是Apache没把
DocumentRoot
指向
public/
目录,且没开
AllowOverride All
。默认用
php artisan serve
只是开发捷径,真要模拟生产环境就得走Web服务器配虚拟主机。 常见错误现象:
Forbidden You don't have permission to access this resource.
或访问首页显示目录列表(没走
index.php
)。 确保
DocumentRoot
设为项目根目录下的
public
路径,比如
/var/www/myapp/public
,不是
/var/www/myapp
对应
块里必须有
AllowOverride All
,否则
.htaccess
不生效,路由全404 确认
a2enmod rewrite
已执行,且Apache配置里
LoadModule rewrite_module
没被注释 如果用macOS或Ubuntu,注意
/etc/apache2/sites-available/
下启用的配置是否用
a2ensite
激活了 Nginx配Laravel本地站点老跳404 核心原因:Nginx不像Apache自动读
.htaccess
,必须手动把Laravel的重写规则写进server块,漏掉就只认
index.php
,其他URL全挂。 使用场景:你改了
APP_URL
、用了Vue Router history模式、或单纯想让
/login
这种路径不带
index.php
前缀。 location块必须包含
try_files $uri $uri/ /index.php?$query_string;
,这是Laravel官方唯一认可的重写逻辑
root
指令要指向
public
目录,不是项目根目录;若用
alias
,路径末尾斜杠和拼接逻辑极易出错,优先选
root
PHP-FPM的
fastcgi_param SCRIPT_FILENAME
必须写成
$realpath_root$fastcgi_script_name
,否则
$_SERVER['SCRIPT_FILENAME']
会错,导致
storage_path()
等辅助函数失效 为什么
php artisan serve
不能当正式访问入口 因为它是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轻松过百;兼容性影响:不识别
.env
里的
APP_URL
用于生成绝对URL,邮件、API响应里的链接会错。 开发阶段图省事可以用,但一旦涉及前端资源加载、跨域、队列监听、WebSocket,立刻崩 浏览器访问
http://127.0.0.1:8000
时,所有相对路径(如
/css/app.css
)会被解析成
http://127.0.0.1:8000/css/app.css
,而内置服务器不会自动映射到
public/css/
,常导致404 如果你在
.env
里写了
APP_URL=http://myapp.test
,但实际用
artisan serve
访问,生成的密码重置链接就是错的 Windows上hosts和vhost配好还是打不开myapp.test 最常被忽略的一点:Windows防火墙或杀毒软件会拦截非80/443端口的本地HTTP请求,尤其当你把Apache/Nginx配成8080或8001这类端口时。 另一个隐蔽坑:Chrome/Edge对
.test
域名做了强制HTTPS重定向(因为ICANN把
.test
划为保留顶级域),哪怕你没配SSL,浏览器也会先发
https://myapp.test
,然后失败。 换用
.localhost
.dev
(注意
.dev
需配HTTPS,否则现代浏览器拒接) 检查
C:\Windows\System32\drivers\etc\hosts
里有没有多余空格或中文字符,Windows hosts文件对格式极其敏感 用
curl -v http://myapp.localhost
绕过浏览器,确认是服务没起来,还是浏览器拦截 如果用Docker或WSL2,
localhost
在Windows宿主机上可能不指向容器内网,得查
ipconfig
里WSL2的IP再绑定 复杂点永远在路径和权限链上:从hosts → DNS解析 → Web服务器监听 → DocumentRoot指向 → .htaccess/Nginx重写 → PHP执行权限 → storage/logs写入权限,漏一环就静默失败。

相关文章