すべての着信要求を1つのスクリプト(web-rootのindex.php
)で処理したい。mod_rewriteのApacheとバックスラッシュ
ので、次は現在、何が起こるかです:http://localhost/foo/bar/baz
がに(.htaccess
経由)のApacheによってルーティングさ:これはうまく機能http://localhost/index.php?url=foo/bar/baz
、しかし、Firefoxで私はこれを行うことができますよ:http://localhost/foo\
- >バックスラッシュに注目してください。
とApache、代わりに行うので:
オブジェクトが見つかりません:
/index.php?url=foo\
は、一般的なエラーページのことわざを発行します!要求されたURL がこのサーバー上に見つかりませんでした。 を手動で入力した場合は、 のスペルを確認してもう一度お試しください。
これがサーバーエラーと思われる場合は、 ウェブマスターにお問い合わせください。
エラー404ローカルホストのApache/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にバックスラッシュを正しく転送させたいと考えています。私は適切にこの作業を行うことができますどのように
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L]
: は、ここにその全体が私の.htaccess
ファイルですか?
編集:私はウェブホストでこれを試しましたが、これは正しく処理されています。私はそれがhttpd.conf
のいくつかの設定だと思うようになります。
可能なバグ:https://issues.apache.org/bugzilla/show_bug.cgi?id=42499また、あなたのhtaccessに追加しようとしました 'AllowEncodedSlashes On' – RobertPitt
@RobertPitt:ありがとう、私は' AllowEncodedSlashes '。それを私の '.htaccess'ファイルに追加すると、サーバISE(HTTP 500)になります。これはローカル開発ボックス(Windows)とWebホスト(Linux)で発生します。 Apacheのドキュメントを見ると、 'server config、virtual host'のようにそのコンテキストがリストされているようですので、' .htaccess'をサポートしていませんか? – NuCalTone