skillup

技術ブログ

サーバー・ネットワーク

rewriteディレクティブ

投稿日:2016年12月11日 更新日:

リクエストURIを条件に応じて書き換えたり、リダイレクトする機能を使うときはrewriteを使います。こちら非常によく使う機能です。

具体的な例を見ていきましょう。

これはフレームワークでみられますが、パスをクエリストリングに変更する設定例です。例えば/users/1などでアクセスがあった場合、/show?users=1に書き換えられ処理が行われます。

この例でも使用しているようにrewrite表現部分の()内の値をリプレイスメント内の$1で参照しています。$1なのあとの?はもとのリクエストのクエリストリングを無視することを意味します。

例えば/user/1?key=valueのようなアクセスがあった場合、/show?user=1?key=valueに書き換えられるのを防ぐことができます。

rewriteディレクティブは下記のような記述方法で設定します。

rewrite   正規表現  リプレイスメント  フラグ

フラグ一覧

なし             rewriteを実行し、そのまま処理を継続
last              rewriteを実行し、すべてのlocationを対象に再度処理をはじめから実行
break           rewriteを実行し、一度実行したlocationは対象外にして処理をはじめから実行
redirect        ステータスコード302でリダイレクト
permanent    ステータスコード301でリダイレクト

よくあるrewriteパターン

検索の実行

ユーザープロファイルページ

複数の引数

1つのパスに複数の情報

参考文献

Nginx入門

-サーバー・ネットワーク
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

任意のログファイルのログローテションについて

本日は自作のログファイルをうまくローテーションさせる方法について。 自作でログを作っておりますと、日がたつにずれどんどんと容量が膨らんでいきます。 放置するととんでもない量になっていることが多いですね …

no image

nginxのlocationディレクティブ内のリダイレクト処理について

nginxのlocationディレクリブ内のリダイレクト処理に関して。 結構長い間携わっていますが、適当に理解していた部分が多かったので再度復習です。 特にドメインのサブディレクトリでサービスを運用し …

no image

Apacheでのリバースプロキシ

jenkinsの復習をしていたんですが、持ってたVPSサーバーにjenkins環境を構築、jenkinsのURLをサブドメインにし、アクセスした時に別ポートに飛ばす仕様にしました。 前提条件として下記 …

no image

Let’s Encryptによるhttps化

以前下記の記事で、herokuでLet’s Encryptを使おうとしたのですが、結局使うことがありませんでした。 herokuでのLet’s Encrypt設定 どこかで使おうか・・と考 …

no image

set,ifディレクティブ,変数に関して

これまで基本的なnginxの設定についてみてきましたが、今回はset,ifディレクティブについてみていきます。 Contents1 変数とset2 error_page3 名前付きlocation 変 …