Webは用いる人のリテラシーで決まる ウェブ運用と開発現場を経験したエンジニアのTIPS
TOP > BLOG > IT記事

nginxのリダイレクトでクエリー文字列が含まれる場合の対処方法

早川朋孝 早川朋孝
EC専門のSE

nginxのリダイレクトでは転送元のurlにクエリーが含まれる場合は、シンプルにリダイレクトすることはできない。

こういうURLがあるとしよう。
cat-marketing/blog_detail?=xxxx

例えば、こう書いてもリダイレクトは機能しない。

location = /cat-marketing/blog_detail?=xxxx {
return 301 https://$host$request_uri;
}

ではどうすればいいかと言うと、以下のようにすればいい。これはクエリーが999の時にだけ別の記事に転送するという例だ。

set $keyword_name “”;
if ($args ~ “blog_detail=(.*)”) {
set $keyword_name $1;
}
if ($keyword_name = “999”) {
rewrite ^/blog_detail.*$ https://hogehoge/article_?=1500?;
break;
}

少し解説をすると、まず適当な変数を空の値で初期化する。値が999以外の時の処理を先に書き、999の時にだけ転送する処理を記述する。

×
このブログを書いてる人
早川 朋孝 EC専門のSE
IT業界歴20年のエンジニアです。ネットショップ勤務で苦労した経験から、EC・ネットショップ事業者に向けて、バックオフィス業務の自動化・効率化を提案するSEをしています。
プロフィール
API連携の相談にのります
趣味は読書、ピアノ、マリノスの応援など
PAGE TOP