2012-03-13 8 views
0

この設定では、バージョニングの目的でURLをサブディレクトリに書き換え、URLから疑問符を取り除くために、クエリー文字列全体を "request"という単一のGET変数にプッシュします。この.htaccessファイルの2行目と3行目はどのような処理を行いますか?

RewriteEngine On 
RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule .* - [L] 
RewriteRule (www/.*)$ 2.0/public/$1 [L] 
RewriteRule ^(.*+)$ 2.0/public/index.php?request=$1 [L] 
DirectoryIndex index.php 

私は一緒に、それは私の目的のために働くいくつかの奇跡によって、このパッチを適用し、私はまだ、なぜ100%わかりません。それが正しく機能するためには、これらの行がすべて必要です。具体的には、2行目と3行目のヘルプが必要です。

[L]フラグは現在のリクエストの書き換え処理を停止し、新しいリクエストを行います。おそらく2行目を説明しています)。 3行目の目的は何ですか?

答えて

0

てみましょう最初の数あなたのラインを、あなたが参照しているのかはっきりしていないので:今

1. RewriteEngine On 
2. RewriteCond %{ENV:REDIRECT_STATUS} 200 
3. RewriteRule .* - [L] 
4. RewriteRule (www/.*)$ 2.0/public/$1 [L] 
5. RewriteRule ^(.*+)$ 2.0/public/index.php?request=$1 [L] 
6. DirectoryIndex index.php 

、の各行が何を意味するのかを説明してみましょう:URL書き換えの

  1. 電源を入れます。
  2. 要求されたファイルが見つかった場合
  3. ...返信して停止してください。
  4. URLが「www /」で始まっている場合は、サブフォルダ「2.0/public /」にリダイレクトし、要求文字列全体を追加します。
  5. それ以外の場合は、ドメイン名の後に1文字以上の文字がある場合は、「2.0/public/index.php?request =」にリダイレクトし、リクエスト文字列全体をパラメータとして追加します。
  6. デフォルトのハンドラを指定します。
+0

この場合、URLを一度だけ書き換えることができます。それ以降の書き換えは3で停止するためです。 – Luke

0

ライン2を最初にチェックし、その場合はリダイレクト要求ENVを使用して:REDIRECT_STATUSをし、その場合はリダイレクト要求は、それはすぐにラインの処理を終了3.

あなたは、他の機能を理解するためにRewrite Cheat sheetをチェックすることをお勧めしますmod_rewrite。

関連する問題