使用 nginx 在 Laravel API 路由上找不到 404

gha*_*han 0 php nginx laravel

PHP 7.2我正在尝试使用和设置服务器nginx。当我导航到 Laravel 主页时,我可以加载 Laravel 主页my-site.com/snow,但是我无法API.php加载定义的任何 API 路由。我的所有 API 路由都以/api/like为前缀/api/login404我的所有 API 路由均出现错误。我究竟做错了什么?

location ~ \.php$ {
  include snippets/fastcgi-php.conf;
  # With php-fpm (or other unix sockets):
  fastcgi_pass unix:/run/php/php7.2-fpm.sock;
  # With php-cgi (or other tcp sockets):
  # fastcgi_pass 127.0.0.1:9000;
}

location /snow {
  index index.php;
}

location /snow/api {
  root /var/www/html/snow;
  rewrite ^/api/(.*)$ /$1 break;
  try_files $uri $uri/ /api/index.php$is_args$args;
}

location ~ snow/api/.+\.php$ {
  root /var/www/html/snow;
  rewrite ^/api/(.*)$ /$1 break;
  #include snippets/fastcgi-php.conf;
  fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
Run Code Online (Sandbox Code Playgroud)

.htaccess

Options -Indexes
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

<Files .env>
    Order allow,deny
    Deny from all
</Files>

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

Ruh*_*ara 9

我遇到过同样的问题

我替换了

try_files $uri $uri/ =404;
Run Code Online (Sandbox Code Playgroud)

try_files $uri $uri/ /index.php$is_args$args;
Run Code Online (Sandbox Code Playgroud)

它起作用了。