PHP虚拟目录属Web服务器配置,须指向Laravel的public目录;Laravel路由是框架内PHP逻辑,定义在routes/web.php中,二者分属不同层级且必须协同工作。

PHP 创建虚拟目录与 Laravel 路由映射是两个不同层级的事:虚拟目录属于 Web 服务器(如 Apache/Nginx)的配置层面,用于将域名或路径指向物理目录;而 Laravel 的路由映射是框架内部的 PHP 逻辑,负责把 HTTP 请求 URI 分发给控制器或闭包。二者需配合,但不能互相替代——尤其关键一点:Web 服务器必须指向 Laravel 项目的 public 目录,否则路由无法正常工作。
虚拟目录必须指向 public 目录
这是最容易出错的第一步。Laravel 是单入口框架,所有请求都应经由 public/index.php 进入。若直接把虚拟主机根目录设为项目根目录(如 /var/www/myapp),则 .env、app/、config/ 等敏感目录可能被直接访问,存在安全风险,且路由机制会失效。
- Apache 示例(
httpd-vhosts.conf):<VirtualHost *:80><br> DocumentRoot "/var/www/myapp/public"<br> ServerName myapp.test<br> <Directory "/var/www/myapp/public"><br> AllowOverride All<br> Require all granted<br> </Directory><br></VirtualHost>
- Nginx 示例(server 块内):
root /var/www/myapp/public;<br>location / {<br> try_files $uri $uri/ /index.php?$query_string;<br>} - 本地 hosts 文件需同步添加:
127.0.0.1 myapp.test
Laravel 路由文件决定实际 URL 映射
服务器完成请求转发后,Laravel 才开始处理路由。所有 Web 路由定义在 routes/web.php 中,它只对带 Session、CSRF 保护的常规网页请求生效(API 路由在 routes/api.php,前缀默认为 /api)。
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
- 基础闭包路由:
Route::get('/about', function () { return view('about'); }); - 控制器路由:
Route::get('/posts', [PostController::class, 'index']); - 带参数路由:
Route::get('/user/{id}', [UserController::class, 'show'])->where('id', '\d+'); - 资源路由(推荐用于 CRUD):
Route::resource('photos', PhotoController::class);自动生成 7 个标准路由
不要混淆服务器重写与框架路由
有人误以为在 Apache 的 .htaccess 或 Nginx 配置里“加一条 rewrite 规则”就能替代 Laravel 路由,这是误区。服务器重写(如把 /old-page 301 跳转到 /new-page)发生在请求到达 PHP 之前,属于 HTTP 层;而 Laravel 路由是在 PHP 运行时解析 REQUEST_URI 并匹配规则,属于应用层。两者用途不同:
立即学习“PHP免费学习笔记(深入)”;
- 用服务器配置做:域名绑定、HTTPS 强制跳转、静态资源缓存、旧 URL 重定向
- 用 Laravel 路由做:动态页面分发、中间件注入(如 auth、throttle)、参数验证、命名路由生成 URL
调试技巧:快速验证是否配置正确
如果访问域名返回 404 或显示目录列表,按顺序排查:
- 确认浏览器地址栏 URL 对应的是你配置的
ServerName(如myapp.test),不是localhost/myapp这类子路径方式 - 运行
php artisan route:list查看当前已注册的所有路由,确认目标 URI 是否在列表中 - 临时在
public/index.php开头加die('reached');,看能否执行——若不能,说明请求根本没进 Laravel,问题出在服务器配置 - 检查
storage/logs/laravel.log是否有权限错误或解析异常


















