Nginx - 将查询字符串重写为路径

Nginx - 将查询字符串重写为路径

我尝试定义 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

相关内容