ApacheでRedirectを使わず、RewriteRuleでリクエストの返信をする方法 | ~/techlog/

ApacheでRedirectを使わず、RewriteRuleでリクエストの返信をする方法


ApacheでRedirectを使わずに別サイトへ転送する方法


・条件1:アクセスページやパラメータを条件に転送先を分類する

・条件2:パラメータは引き継がず転送先では破棄する


RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} moto_page\.html
RewriteCond %{QUERY_STRING} param01=hogehoge
RewriteRule ^fugafuga/moto_page.html*$ http://example.com/hogefuga/tensousaki_dir/ ? [R,L]

とか

RewriteRule ^(fugafuga)/(*)$ http://example.com/hogefuga/tensousaki_dir/ ? [R,L]

とか...


Apacheの環境変数 %{REQUEST_URI}  %{QUERY_STRING} の値条件にしている。

RewriteCond が条件

RewriteRule が転送の設定。RewriteRuleで文字を置き換えてるらしい。

が、書き換え先をhttp://から指定すると部分書き換えではなく書き換え先に書いたURLにそのまま

飛ぶらしい。

RewriteBase は、よーわからん。


最後の ? をつけたらなぜかパラメータが引き継がれなかった。


RewriteRule ^(fugafuga)/(*)$ http://example.com/hogefuga/tensousaki_dir/ [R,L,QSA]

としてQSAを付けるとパラメータが引き継がれるみたい。


[L]はそこまでで処理終わり..の意味

[R]はHTTPステータスを302として返す..の意味