1

URL 書き換えについて知ったのはつい最近のことなので、まだまだ学ぶことがたくさんあります。

Easy Mod Rewriteチュートリアルに従っている間、彼らの例の1つの結果は私を本当に混乱させます.

RewriteBase /
RewriteRule (.*) index.php?page=$1 [QSA,L]

と書き換え/homeます/index.php?page=index.php&page=home

重複はホストの構成の何かが原因である可能性があると思いましたが、XAMPPのクリーン インストールでも同じことが起こります。

それで、これが2回解析されるように見える理由を誰か知っていますか?

そして、私には、これを行おうとすると、無限ループになるように思えます.なぜ2サイクルで止まるのですか?

4

2 に答える 2

2

Apache モジュール mod_rewriteのドキュメントから:

'last|L' (最後のルール)
[…]RewriteRuleが内部リダイレクトを生成する場合 […] これにより、リクエストが再注入され、最初の から始まる処理が繰り返されますRewriteRule

RewriteCondこれを防ぐには、追加のディレクティブを使用できます。

RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteRule (.*) index.php?page=$1 [QSA,L]

または、一致しないようにパターンを変更し、リダイレクトまたは後で PHP で変数index.phpを使用します ( )。REQUEST_URI$_SERVER['REQUEST_URI']

RewriteRule !^index\.php$ index.php?page=%{REQUEST_URI} [QSA,L]
于 2009-02-01T12:26:34.100 に答える