index.php
( web-rootの)単一のスクリプトを介してすべての着信要求を処理したい。
したがって、現在行われていることは次のとおりです。http://localhost/foo/bar/baz
Apacheによって(を介して.htaccess
)次の場所にルーティングされます。http://localhost/index.php?url=foo/bar/baz
これはうまく機能しますが、Firefoxではこれを行うことができます: ->バックスラッシュhttp://localhost/foo\
に注意してください。
そして、Apacheは、次のことを行う代わりに:/index.php?url=foo\
次のような一般的なエラーページを表示します。
オブジェクトが見つかりません!要求されたURLはこのサーバーで見つかりませんでした。URLを手動で入力した場合は、スペルを確認して再試行してください。
これがサーバーエラーであると思われる場合は、ウェブマスターに連絡してください。
エラー404localhostApache / 2.2.14(Win32)DAV / 2 mod_ssl / 2.2.14 OpenSSL / 0.9.8l mod_autoindex_color PHP / 5.3.1 mod_apreq2-20090110 / 2.7.1 mod_perl / 2.0.4 Perl / v5.10.1
直接行く:http://localhost/index.php?url=foo\
しかし、問題なく動作します。
私がインターネットで見たすべてのサイトは、バックスラッシュを適切に処理できるようです(例:)http://stackoverflow.com/tags/php\\\\\
。
この動作はバグだと考えており、Apacheにバックスラッシュを正しく転送させたいと考えています。これが私の.htaccess
ファイル全体です:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L]
どうすればこれを正しく機能させることができますか?
編集:私はちょうど私のウェブホストでこれを試しました、そしてこれは彼らによって適切に処理されます。の設定だと思わせてくれますhttpd.conf
。