nginx 中清理带有多个参数的 URL

nginx 中清理带有多个参数的 URL

我是 nginx 新手。问题是如何将带有查询字符串的 URL 重写为“干净”的 URL:

对于一个参数:

host.com?page.html/param1=value1  <- host.com/page/value1
www.host.com?param1=value1        <- www.host.com/page/value1

对于两个参数:

host.com?page.html/param1=value1&param2=value2 <- host.com/page/value1/value2
www.host.com?param1=value1&param2=value2       <- www.host.com/page/value1/value2

对于 n 个参数:

host.com?page.html/param1=value1&param2=value2..&paramN=valueN <- host.com/page/value1/value2/../valueN
www.host.com?param1=value1&param2=value2..&paramN=valueN       <- www.host.com/page/value1/value2/../valueN

答案1

参数(又称参数或查询字符串)不会直接被视为 nginx 重写的 URL 的一部分。相反,它们被保存为变量,可以访问、测试并插入到生成的 URL 中。

它们保存的名称是 $arg_。因此,在第一个示例中,您需要像这样重定向它们:

rewrite ^/page.html$ /page/$arg_param1? permanent;

我不建议在没有进行输入验证的情况下直接从您的主机名(www.host.com?param1=value1)对参数执行重写,否则您最终会从您的主页重定向所有内容。

相关内容