我尝试定义 nginx 查询字符串路径重写,但目前失败了。502错误的网关. 寻找任何明显的错误。
试图实现以下目标:
前
https://example.co.uk/user/用户名?profiletab=products
后
https://example.co.uk/user/用户名/products
当然,“用户名”会随着每个用户的改变而改变。
我正在使用生成器和各种类型的工具来尝试构建它,我不是正则表达式类型的人等等。
location ~ "/user/([^/]+)/products" {
try_files $uri /user/$1?profiletab=products;
}
尝试#2
location ~ "^/user/([^/]+)/products(/?)$" {
set $products_user "$1";
try_files $uri $uri/ @products;
}
location @products {
proxy_pass http://127.0.0.1/user/$products_user/?profiletab=products;
}
答案1
您希望将一个“SEO”URL 重写为另一个 URL(SEO->SEO),并try_files
用于定位用于处理请求的实际文件(SEO->file)。因此,这不是您在这里所需要的。
您所需要的是重写内部 URL,这就是rewrite
亮点所在。
server {
# SEO->SEO:
rewrite ^/user/([^/]+)/products/?$ /user/$1/products?profiletab=products;
# your existing Wordpress block (SEO->file)
location / {
try_files ...
}
}
数学^/user/([^/]+)/products/?$
字符串类似于/user/username/products
并捕获用户名部分以$1
供第二个参数使用rewrite
。