You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGINX配置Laravel路由问题:根路径匹配与正则路由块实现

解决Nginx部署Laravel+静态页面的路由问题

问题1:路由前缀丢失导致匹配异常的修复

你的问题根源是Nginx转发请求时截断了/api、/tinker这类前缀,导致Laravel收到的请求URI缺失前缀,因此出现:

  • 访问/api/v1/myroute时,Laravel只能匹配/v1/myroute
  • 第三方包的/tinker路由需要通过/tinker/tinker访问(Nginx去掉/tinker后转发给Laravel,Laravel收到的是/,此时访问路径的/tinker加上Laravel内部的/tinker路由,就变成了/tinker/tinker)

修复后的Laravel路由Nginx配置

不要截断请求URI,完整转发给Laravel的index.php:

# 匹配/api、/auth、/logs、/tinker开头的所有请求,交给Laravel处理
location ~ ^/(api|auth|logs|tinker) {
    root /path/to/laravel/public;
    try_files $uri $uri/ /index.php$is_args$args;

    # FastCGI配置(根据你的PHP环境调整)
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

配置后,Laravel会收到完整的请求URI,你可以正常定义/api/v1/myroute这类路由,第三方包的/tinker、/logs也能直接通过原路径访问。

问题2:正则匹配路由块的正确写法

你尝试的^/(api|auth)方向正确,但需要遵循Nginx的正则匹配规则:

  • 用~表示区分大小写的正则匹配(~*为不区分大小写)
  • 正则^/(api|auth|logs|tinker)表示匹配以指定前缀开头的所有请求
  • 注意匹配优先级:正则匹配优先级高于普通前缀匹配,需将Laravel的正则location写在静态页面的location之前

完整Nginx配置示例

server {
    listen 80;
    server_name your-domain.com;

    # 前端静态页面根目录
    root /path/to/frontend/dist;
    index index.html;

    # 处理Laravel专属路由
    location ~ ^/(api|auth|logs|tinker) {
        root /path/to/laravel/public;
        try_files $uri $uri/ /index.php$is_args$args;

        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 所有其他请求返回前端静态HTML
    location / {
        try_files $uri $uri/ /index.html;
    }
}

关键注意点

  1. 确保root路径正确:Laravel的location指向项目public目录,前端location指向静态文件根目录
  2. try_files $uri $uri/ /index.php$is_args$args;的作用是:先尝试访问请求的文件/目录,不存在则转发给index.php并保留查询参数
  3. 正则不要遗漏^:确保只匹配指定前缀开头的请求,避免误匹配其他路径

内容的提问来源于stack exchange,提问作者Gerardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 02:15:13