yuu_nkjm blog


2014-04-13(Sun) [長年日記]

[Apache][mod_rewrite] mod_rewriteによるURLの書きかえ

正規表現(A)は、リライトを実行するかどうかの条件(真偽値)であって、置換 url =~ s/(A)/(D)/ ということではない.

mod_proxyを場当たり的に使ってるので,よく躓く.上のページを見て,少し理解が進んだ.また分からなくなると思うが,自分のケースをメモ.

RewriteEngine on
RewriteBase /event/
RewriteRule ^foo2014$ http://foo.nkjm.info/ [QSA,P,L]
RewriteRule ^foo2014/(.*)$ http://foo.nkjm.info/$1 [QSA,P,L]
  • ^foo2014$にマッチしたらリライトが実行される.QSA(query string append)はクエリ文字列を足す.PはプロキシになりURLが書き換わらない(それに対してRだとリダイレクトになる.mod_rewriteの設定をデバッグするときはRの方が分かりやすい.).Lはこのルールで評価を終了.
  • ^foo2014/(.*)$にマッチしたらリライトが実行される.$1が正規表現の(.*)に置き換わる.

トラブルシューティング

[Tue Apr 01 14:30:23 2014] [warn] proxy: No protocol handler was valid for the URL /world/. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

こんなエラーが出た.Pを指定したのにapacheにproxyに関するモジュールが入っていなかったのが原因の様だった.proxy,proxy_httpをロードするようにしたら解決した.

Debian apache 設定 - OraRailsを参考にした.


トップ «前の日記(2014-04-10(Thu)) 最新 次の日記(2014-05-14(Wed))» 月表示 編集 設定
2006|01|06|12|
2007|06|09|
2008|01|03|04|06|07|08|09|10|12|
2009|01|02|05|06|07|08|10|11|12|
2010|03|04|05|06|07|08|09|10|11|
2011|01|02|03|04|05|06|07|08|09|11|12|
2012|01|02|04|06|07|08|10|11|12|
2013|01|02|03|07|08|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|
2015|01|02|07|11|12|
2016|01|03|05|07|08|09|