2011-12-25 6 views
0

Apacheサーバー用にmod_rewriteを使用します。 私は、このサンプルでは、​​両方のRewriteRulesが必要なのか、なぜ私は完全には理解していない:なぜ両方のルールセットが必要ですか?

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ public/ [L] 
    RewriteRule (.*) public/$1 [L] 
</IfModule> 

もともとこのDIY MVCチュートリアルで発見、それは^$ように思えると(.*)は同じことを意味します。そして、なぜ2番目の砲台が発射されないので、2つの[L]旗が必要なのですか? 私は、実際のソリューションをコピーするのではなく、すべての内部の仕組みをより深く理解しようとしています。

答えて

1

いいえ、^$.*は同じことを意味するものではありません: - 空の入力を含む最初の試合空の入力は、第二は何もマッチします。 2番目のルールで十分です。

ここ[L]がある理由として、空の要求を考慮していない、と何[L]

  • 最初のルールをpublic/に要求を向けるだろう。
  • 2つ目がトリガーし、public/public/public/に変更します。
+0

ありがとうございます! ^(。*)$またはちょうど(。*) –

+0

これは同じで、どちらもまったく同じものに一致します。そこにアンカーを気にしないでください;) – fge

関連する問題