1

書き換えルールを作成したいので

www.example.com/whatever/here

マップしますか

www.example.com/index.php/whatever/here

だからそれ$_SERVER['PATH_INFO']が利用可能です。そのために、次のルールセットを作成しました。

RewriteEngine On
RewriteCond {%REQUEST_FILENAME} !-f
RewriteCond {%REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1

これだけで500サーバーエラーが発生します。Apacheエラーログには次のように記載されています

[Sun Sep 30 17:23:08.758705 2012] [core:error] [pid 2584:tid 1704] [client :: 1:58591] AH00124:設定エラーの可能性があるため、リクエストが10の内部リダイレクトの制限を超えました。必要に応じて、「LimitInternalRecursion」を使用して制限を増やします。'LogLevel debug'を使用して、バックトレースを取得します。

しかし、私は再帰を見ることができません。私がそれを試してみるとき、クエリを考えてみましょう:

RewriteRule ^(.*)$ index.php?route=$1

期待どおりに動作し$_SERVER['PATH_INFO']ますが、使用できません。


また、誰かが尋ねる前に、$_SERVER['PATH_INFO']私はそのように、私は次のような複雑なパスを持つことができるので欲しいです:

www.example.com/controller/action/data?more=data

必要な場合。

4

1 に答える 1

1

RewriteCondそれが実際のコードである場合、サーバー環境変数がで正しく指定されていません。フラットアウト500解析エラーでない場合、これにより条件が無視され、ループが発生するすべての要求で書き換えが行われます。

RewriteEngine On
# The % goes outside the {}
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# And add a [L] flag
RewriteRule ^(.*)$ index.php/$1 [L]
于 2012-09-30T15:32:42.000 に答える