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/;
}
我有两个 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/;
}