nginx は特定のフォルダを php と arg に書き換えます

nginx は特定のフォルダを php と arg に書き換えます

domain.tld/blog/read.php?article=first-article を domain.tld/blog/first-article にリダイレクトしようとしています

私が試したがうまくいかず、domain.tld/first-article にリダイレクトされました

location "^blog/([^/]+)/?$" {
 try_files /$uri /$uri/ /blog/read.php?article=$1;
}
location /blog {
 rewrite ^/blog/?$ /blog/read.php?article=? last;
 rewrite ^/blog/([-a-zA-Z0-9_]+)/$ /blog/read.php?article=$1? last;
}
location ~ "^/blog/([^/]+)/?$" {
 try_files /$uri /$uri/ /blog/read.php?article=$1;
}

問題は構成内の他の部分、主に下から2番目の場所から発生していると思います

server {
...
...
location ~ "^/([^/]+)/?$" {
 try_files $uri $uri/ /device.php?name=$1;
}

location ~ "^/([^/]+)/([^/]+)/?$" {
 try_files $uri $uri/ /device.php?name=$1&crversion=$2;
}
...

何かアドバイスがあればとても助かります。

答え1

簡単に答えると、私の設定は最初は問題なかったのですが、nginx の設定は上から下まで読み込まれ、最初に一致したものが使用されるということです。
そのため、最終的に「修正」されたのは、サイト設定の上部にブログパーツを追加することでした。

location ~ "^/blog/([^/]+)/?$" {
 try_files /$uri /$uri/ /blog/read.php?article=$1;
}

関連情報