nginxで旧URLを新URLにリライトするお話です
↓
やりたいことはこれだけですが、QueryStringのリライト条件が何故か上手く動きません。
書き方が悪いだけかもしれませんが、最終的に以下の書き方で動作しました。
if ($args ~ "categoryId=([0-9]*)&brandId=([0-9]*)&brandName=(.*)" ) {
set $categoryId $1;
set $brandId $2;
set $brandName $3;
rewrite ^/yahoo/itemSearch/(.*)$ /yahoo/item/search/$categoryId/?brandId=$brandId&brandName=$brandName? permanent;
break;
}
$argsはQueryStringの値が入ります。
複数の$argsはかけない(if XXXX || XXXX みたいな)ようなので、$args側ではなく、検索条件側に複数条件(categoryId・brandId・brandName)を書いています。
「set $categoryId $1;」これは、$1を$categoryId変数に保存しています。
わざわざこうしているのは、
rewrite ^/yahoo/itemSearch/(.*)$ /yahoo/item/search/$categoryId/?brandId=$brandId&brandName=$brandName? permanent;
こっちの$1で上書きされてしまうので、一旦$categoryIdに保存しました。
今回は旧URLを新URLに置換したいだけなので、
属性を permanent(HTTPステータス301)にして、最後にbreakしてリライトを終了させています。
実を言うと、この書き方でしか動かなかったので、こういう書き方をしています。
もっといい方法というか、本来のやり方が解る方、教えて下さい。。。。