3

その書き換え規則とはどういう意味ですか?

   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]

申し訳ありませんが、mod_rewrite 構文の説明を読んだ後でも、理解できませんでした... :-/ 誰かがそのルールが何をするのか説明してくれませんか?

どうもありがとう。

4

2 に答える 2

6

私はあなたのためにこれをうまくいけば解決する簡単な説明をしようとします。

まず、正規表現を使用したことがない場合は、調べてみてください。

RewriteRuleは3つの異なる部分です。1つ目は、特定のパターンのリクエスト文字列を検索するために使用される式です。2つ目は、サーバーから実際に提供される宛先文字列です。3つ目は、角かっこ内にあるオプションです。

クライアントが正規表現のいずれかの形式でサーバーに要求を行うと、宛先文字列が実際に呼び出されてユーザーに返されますが、ユーザーにはこのアクションは表示されません。括弧のセット内にある正規表現内のすべてのものは、宛先文字列で使用するために保存されます。

したがって、2つのルール(サイトがhttp://www.example.com/であると仮定)を使用すると、次のようになります。

http://www.example.comと入力すると、サーバーはインデックスページまたはファイルリスト(または以前の.htaccessファイルによってすでに決定されているもの)を返します。

http://www.example.com/page2.htmlと入力すると、サーバーはapp / webroot/page2.htmlを返します。そのファイルが存在しない場合は、代わりに404エラーページが表示されます。

RewriteRulesの両方が[L]それらの最後にあります。これは、これが従うべき最後のルールであることをApacheに通知します。ルールが適合する場合、Apacheはそれを実行してから、それ以上のルールの読み取りを停止します。カンマで区切って使用できる他のオプションがあります。

于 2009-12-11T02:18:03.973 に答える
1

^$へのリクエストをキャッチし/、にリダイレクトしますapp/webroot/。は、これが「最後の」ルールであることを示します。[L]つまり、このルールが要求に一致すると、mod_rewriteは処理を停止します。

(.*)何にでも一致し、それをにリダイレクトしapp/webroot/、「何でも」の部分を追加します。この場合も、このルールが実行された後、[L]手段は処理を停止します。

最初のルールは、http://www.yoursite.com/のリクエストをキャッチし、それらをhttp://www.yoursite.com/app/webroot/に送信します(その後、Webサーバーはインデックスなどのインデックスドキュメントを提供します。要求を満たすためのphp。

2番目のルールは、http; // www.yoursite.com ** / path / to / some /page.php**などの他のリクエストをキャッチします。太字の部分は「キャプチャ」されており、mod_rewriteはリクエストをhttp://www.yoursite.com/app/webroot/path/to/some/page.phpに送信ます

ユーザーにはhttp://www.yoursite.com/のみが表示されます。

また、この式はおそらく問題を引き起こすことに注意してください。http://www.yoursite.com/app/webroot/index.phpと入力すると、mod_rewriteはリクエストをhttp://www.yoursite.com/app/webroot/app/webroot/index.phpに変更します。これはおそらくあなたが望むものではありません。

于 2009-12-11T02:19:32.100 に答える