2011-12-10 4 views
0

要求されたファイルが存在しない場合、すべての要求を/application.phpに書き換え、それ以外の場合は書き換えを行わないmod_rewrite規則を定義しています。簡単です:既存のファイルのmod_rewriteの規則

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteRule .* application.php [PT] 

コードには1つの問題しかありません。私はfoo.htmlファイルがあると仮定します。そして、同じように要求:

http://example.com/foo.html/some/other/string

は404エラーで落ちます。 なぜですか?

答えて

0

は404エラーになります。どうして?

このURLは存在しないためです。ファイルstringをフォルダ/foo.html/some/otherに探していますが、そこにはありません。

URL構造http://example.com/foo.html/some/other/stringを使用して、最初のエントリをファイル名として扱い、それ以外のものをパラメータとして扱う動作は、"pathinfo"と呼ばれます。これは、mod_rewriteのとは何の関係もありませんが、あなたのApacheの設定で次のように有効にした場合、利用できるようになります:

AcceptPathInfo On 

その設定が現在あなたのために「オフ」になっているように見えます。

あなたがそれを有効にした場合、ファイル名の後の部分はfoo.htmlに利用できるようになります - PHPで、それは

$_SERVER["PATH_INFO"] 

変数になります。

このメソッドでは、書き換えモジュールをアクティブにする必要はないため、これは「貧乏人のmod_rewrite」と呼ばれることもあります。正常に動作しますが、実際の書き換えほど柔軟ではありません。

関連する問題