nginx
備忘録

nginxのリダイレクトで正規表現を変数に使用する

nginxのリダイレクトで正規表現を変数に使用する

タイトルの通りだがいつも忘れたり、過去のconfig見るのでここいらで備忘録をば。
Webサイトのリニューアルで301リダイレクトをかけるために、アプリにパスするためのlocation。

/etc/nginx/sites-available/default
server {
    listen 80;

    root /var/www/example/web; #Change to project location
    index index.php index.html index.htm;
    server_name example.com; #Change to project server_name

    ・・・

    location ~ ^/(cat1|cat2|cat3|cat4)/(dir1|dir2|dir3|dir4|dir5)/(.*)/(.*\.html) {
       # 正規表現が順にセットされる。(3つ目は使わない。)
              set $category $1;
       set $directory $2;
       set $base_name $4;
       # /redirect をコントロラーが受け取り中で301リダイレクト
       rewrite ^(.*)$ /redirect?category=$category?directory=$directory?base_name=$base_name redirect;
    }
        
       ・・・
}

ディレクトリ構造が決まってないもの ex) /jp/dir1/cat1/tag1/example.htmlや/jp/dir1/cat1/example.html
をどう綺麗に処理したらいいかは調査中。良い方法知ってる方いれば教えてください。