web-dev-qa-db-ja.com

URLを変更せずにnginxを書き換える

Nginxサーバーで書き換え機能を使用したい。

http://www.example.com/1234 」を試してみると、「 http://www.example.com/v.php?id=1234 "とブラウザで" http://www.example.com/1234 "を取得したい。

これはnginx.confファイルです

...
  location ~ /[0-9]+ {
      rewrite "/([0-9]+)" http://www.example.com/v.php?id=$1 break;
  }
...

http://www.example.com/1234 」を試してみると

したい ...

url bar in browser : http://www.example.com/1234
real url : http://www.example.com/v.php?id=1234

しかし、私は困っている...

url bar in browser : http://www.example.com/v.php?id=1234
real url : http://www.example.com/v.php?id=1234
24
user1850593

リファレンス: http://wiki.nginx.org/HttpRewriteModule#rewrite

置換文字列がhttp://で始まる場合、クライアントはリダイレクトされ、それ以上の> rewriteディレクティブは終了します。

そのため、http://部分を削除すると動作します。

location ~ /[0-9]+ {
        rewrite "/([0-9]+)" /v.php?id=$1 break;
}
37
Chuan Ma

私の場合、適用したい他のルールがあるため、「最後」を使用して機能させる必要がありました:

location ~ /[0-9]+ {
    rewrite "/([0-9]+)" /v.php?id=$1 last;
}
0
marcostvz