Nginx用特殊字符重写网址

时间:2017-04-05 15:56:04

标签: nginx nginx-location

我刚收到一个需要重写为nginx的网址列表

example.com/cms.php/inspiration?fullsize > /
example.com/shop/?category_id=27 > /garden/cushion.html
example.com/shop/?2008=1&vare_id=10553&variant_id=2232 > /garden/cushion/black.html

我尝试了以下

简单重写

rewrite /shop/?category_id=27 /garden/cushion.html permanent;

位置重写

location /shop/?category_id=27 {
    rewrite /shop/?category_id=27 /garden/cushion.html;
}

在我评论特殊标志的位置

location /shop/\?category_id=27 {
    rewrite /shop/\?category_id=27 /garden/cushion.html;
}

我将它们直接添加到nginx配置中的server {...}

1 个答案:

答案 0 :(得分:1)

首先,if(is_numeric($var)){ 以后的任何内容都是查询字符串,而不是?rewrite指令使用的规范化URI的一部分。< / p>

实现目标的一种方法是使用location指令测试$request_uri变量。

例如:

map

有关详情,请参阅this documentmap $request_uri $redirect { default 0; /cms.php/inspiration?fullsize /; /shop/?category_id=27 /garden/cushion.html; /shop/?2008=1&vare_id=10553&variant_id=2232 /garden/cushion/black.html; } server { ... if ($redirect) { return 301 $redirect; } ... } 使用this caution