我刚收到一个需要重写为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 {...}
答案 0 :(得分:1)
首先,if(is_numeric($var)){
以后的任何内容都是查询字符串,而不是?
和rewrite
指令使用的规范化URI的一部分。< / p>
实现目标的一种方法是使用location
指令测试$request_uri
变量。
例如:
map
有关详情,请参阅this document,map $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。