Apache配置Laravel 10虚拟主机核心是:DocumentRoot必须指向public目录(如/var/www/myapp/public),且对应块中需设AllowOverride All和Require all granted,并启用mod_rewrite模块,否则必现403或404。

在 Apache 中配置 Laravel 10 虚拟主机,核心就两件事:Web 根目录必须指向 public/ 子目录,且 Apache 必须允许 .htaccess 文件生效并正确转发请求。配错这两点,403 或 404 就会立刻出现,和 Laravel 代码无关。
DocumentRoot 必须设为 public 的绝对路径
Laravel 10 的入口文件是 public/index.php,所有请求都应经由此文件统一处理。如果 DocumentRoot 指向项目根目录(如 /var/www/myapp),Apache 可能直接暴露 .env、app/、storage/ 等敏感路径,既不安全又必然报错。
- ✅ 正确写法(Linux/macOS):
DocumentRoot /var/www/myapp/public - ✅ 正确写法(Windows):
DocumentRoot "C:/xampp/htdocs/myapp/public"(推荐用正斜杠或双反斜杠,避免解析异常) - ❌ 错误写法:
DocumentRoot /var/www/myapp或DocumentRoot "C:/xampp/htdocs/myapp"
Directory 块里必须启用重写和权限
仅设对 DocumentRoot 不够——Apache 默认禁用 .htaccess,而 Laravel 的路由重写全靠 public/.htaccess 里的规则。必须在与 DocumentRoot 完全一致的 块中显式授权:
-
AllowOverride All:让 .htaccess 生效(写成None或漏掉,所有非首页路由都会 404) -
Require all granted:Apache 2.4+ 必需,否则即使路径对也返回 403 -
Options FollowSymLinks:支持符号链接(常见于 Homestead/Valet 环境)
注意: 的路径必须和 DocumentRoot 完全一致,例如:,不能写成项目根目录路径。
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
确保 mod_rewrite 已启用且 .htaccess 存在
Laravel 10 自带的 public/.htaccess 文件默认可用,但需确认两点:
- 运行
a2enmod rewrite(Debian/Ubuntu)或检查LoadModule rewrite_module modules/mod_rewrite.so是否在httpd.conf中启用(Windows) - 重启 Apache 后验证:
apache2ctl -M | grep rewrite(Linux)或查看错误日志是否有Invalid command 'RewriteEngine' - 确认
public/.htaccess文件存在且未被意外删除;标准开头应含RewriteEngine On和兜底规则RewriteRule ^ index.php [L]
别忘了 hosts 绑定和权限修复
本地开发时,域名需手动映射到 127.0.0.1:
- 编辑
C:\Windows\System32\drivers\etc\hosts(Windows)或/etc/hosts(macOS/Linux) - 添加一行:
127.0.0.1 myapp.test(域名可自定义)
同时确保 Web 服务器用户对关键目录有读写权:
- Linux/macOS:
sudo chown -R www-data:www-data storage bootstrap/cache - Windows(WAMP/XAMPP):确保 Apache 进程能写入
storage/和bootstrap/cache/(通常无需改权限,但若报 500 需检查)










