Nginx 位置正则表达式不适用于子页面

Nginx location regex not working for sub pages

我有两个 React 应用程序,一个在“/home/user/www”,一个在“/home/user/builds/checkout”。我想要任何以 '/checkout' 开头的 url,例如。 '/checkout/complete'、'/checkout/error' 以使用该应用程序。我的 Nginx 配置文件中有以下设置:

    root /home/user/www;
    index index.html index.htm;        
    location / {
      if (!-e $request_filename){
        rewrite ^(.*)$ /index.html break;
      }
    }         

    location ~ ^/checkout?(.*)$ {
            allow all;
            root /home/user/builds;
     if (!-e $request_filename){
        rewrite ^(.*)$ /index.html break;
      }
            try_files $uri $uri/index.html =404;
     }

    location ~ ^.+\..+$ {
            try_files $uri =404;
    }

转到 url '/checkout' 工作正常,但任何其他以 '/checkout' 开头的 url 像 '/checkout/complete' 和 'checkout/error' 只是返回 404 页面。

您的配置看起来太复杂了。你能试试这个吗?

root /home/user/www;
index index.html index.htm;        
location / {
    try_files $uri /index.html;
}         

location /checkout/ {
    root /home/user/builds;
    try_files $uri $uri/ /checkout/index.html;
}

如果 /checkout URI 不会将您重定向到 /checkout/,请添加:

location = /checkout {
    return 301 /checkout/;
}