LoginSignup
0
0

【Apache】様々なURLの書き換え(リダイレクト+プロキシ)

Last updated at Posted at 2024-02-09

はじめに

Apacheのリバースプロキシ機能については以前に記事にまとめましたが、ApacheのURLの書き換え(rewrite)機能を初めて本格的に使ったので、備忘録として記事をまとめてみました。

なお以下の設定内容については、技術評論社のApacheポケットリファレンスを参考にしました。

注意点

  • 本記事に出てくるaaaaa.ne.jpbbbbb.ne.jpはドメインの一例です。

単純なリダイレクト

  • 単純なリダイレクトの場合、マッチさせたいURLのパターン(^/index.html$)に続けてリダイレクト先のURLを書きます。
元のURL リダイレクト先URL
http://aaaaa.ne.jp/index.html http://bbbbb.ne.jp/index.html
httpd.confの設定内容
RewriteEngine On
RewriteRule  ^/index.html$ http://bbbbb.jp/index.html [L,R]

新しいパラメーターを付けてリダイレクト

  • 新たにid=123という固定的なパラメーターを付ける場合、以下のようにパラメーターをベタ書きするだけでパラメーターを付けられます。
  • [L,R]というオプションフラグは、Lが「ここで書き換え処理を終える」、Rが「リダイレクト処理」となります。
元のURL リダイレクト先URL
http://aaaaa.ne.jp/index.html http://bbbbb.ne.jp/index.html?id=123
httpd.confの設定内容
RewriteEngine On
RewriteRule  ^/index.html$ http://bbbbb.ne.jp/index.html?id=123 [L,R]

パラメーターを保持してリダイレクト

  • id=123というパラメーターを保持してリダイレクトする場合、以下のように正規表現を組み合わせてパラメーター部分とマッチさせて、リダイレクト先URLにマッチした部分($1)を付加すればOKです。
元のURL リダイレクト先URL
http://aaaaa.ne.jp/index.html?id=123 http://bbbbb.ne.jp/index.html?id=123
httpd.confの設定内容
RewriteEngine On
RewriteRule  ^/index.html(.*)$ http://bbbbb.ne.jp/index.html$1 [L,R]

パラメーターを保持しつつ、新たなパラメーターを付けてリダイレクト

  • 「パラメーターを保持してリダイレクト」と似ていますが、パラメーターとマッチした部分($1)の後ろに新たなパラメーターを「?」を付けた上で付け加えるのがポイントです。
    • QSAというオプションを付けることで、クエリ文字列部分を追加することができます。
    • ちなみにApacheのリファレンスにおいてQSAフラグは「qsappend」と書かれているので、「Query String Append」の略がQSAのようです。
元のURL リダイレクト先URL
http://aaaaa.ne.jp/index.html?id=123 http://bbbbb.ne.jp/index.html?id=123&name=nkojima&type=test
httpd.confの設定内容
RewriteEngine On
RewriteRule  ^/index.html(.*)$ http://bbbbb.ne.jp/index.html$1?name=nkojima&type=test [QSA,L,R]

パラメーターを保持しつつ、新たなパラメーターを付けた上で、別のURLに転送する

  • リダイレクトではなくリバースプロキシ機能を使って別のURLに転送する場合は、Pというオプションフラグを付けます。
    • それ以外の設定については、リダイレクト処理と同じとなります。
  • この設定だとリバースプロキシとなるため、ブラウザのアドレスバー上のURLはhttp://aaaaa.ne.jp/index.html?id=123のままとなります。
元のURL 転送先URL
http://aaaaa.ne.jp/index.html?id=123 http://bbbbb.ne.jp/index.html?id=123&name=nkojima&type=test
httpd.confの設定内容
RewriteEngine On
RewriteRule  ^/index.html(.*)$ http://bbbbb.ne.jp/index.html$1?name=nkojima&type=test [QSA,L,P]

参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0