Tracをインストールして、.htaccessのRewriteRuleを設定していたのですが、
リダイレクトのループが発生しております。
すみませんが、アドバイスを頂けると幸いです。
.htaccess
=========================================
RewriteEngine On
RewriteBase /
RewriteRule ^$ /trac/ [R=301,L]
RewriteRule ^/trac/(.*)$ /trac.cgi/$1 [L]
=========================================
ディレクトリ構成
=========================================
/home/XXXX/www/trac/.htaccess
/home/XXXX/www/trac/trac.cgi
/home/XXXX/www/trac/trac_.cgi
=========================================
もしよければ、RewriteRuleの「L」とは何かや、RewriteRuleの流れを日本語で説明してもらえると助かります。(例えば、tracという文字列できたら、こうなる。という風に。<説明へたですみません。
RewriteBase / 書き換えのベースとなるパス(ベースが明白な場合は不要)。
RewriteRule ^$ /trac/ [R=301,L]
^先頭 $最後なので 何もないパスいわゆるドメインだけでアクセスされた場合、強制的にリダイレクト (Redirect) する。R=301なので永久的に移動。HTTP レスポンスの「301 : Moved Permanently」を返します。
Lがあるので書き換えが行われたら終了
RewriteRule ^/trac/(.*)$ /trac.cgi/$1 [L]
次に^/trac/(.*)$ なので、/trac/で始まり、(.*)なので未入力も含めたパスの場合、/trac.cgi/(入力された値)のアドレスに書き換える、L指定があるので、書き換えが終了したら終了
ちなみに、参考
[C] 次の規則にチェーンする。今の変換パターンと一致し、変換がなされた時だけに次のルールを適用する。
[L] これでRewrite 機能による変換を打ち切ることを示す。
[N] 変換ルールの適用を最初からやり直す。しかし、現在変換済みのURLを対象として行くので、実質上ループをつくることができる。
[R] Redirect させる。つまり、変換されたURLを「Redirect」するものとして、「HTTP/1.1 302 Moved Temporary」のレザルトコードと、Loacation ヘッダに変換されたURLがセットされたレスポンスを返す。
[F] FORBIDDEN を返す。つまり、アクセスが禁止されていることを示す
えっと、上の内容をみるに、やりたい事は、 http://hoge.hoge.jp/
というアクセスがあれば http://hoge.hoge.jp/trac/としたいが
実際は、http://hoge.hoge.jp/trac.cgi/ となってしまうという事かな?
それはRedirectしちゃってるので、もう一度、RewriteRuleにきちゃうからだと思います。
リダイレクトしないと、URLに /trac/とならないからR指定したんだと思います。
だとしたら(.*)ではなく、(.+)として、必ず何か入力されているという条件にしてみては?
ん?ドキュメントルートは/home/XXXX/www/trac/ですか?
ならちがうのかな?
出来ればやりたい事をコメントしていただけますか?