context/path/file/anything/that/follows
などのすべてのURLがcontext/path/file.php/anything/that/follows
またはcontext/path/file.xml/anything/that/follows
になるこの問題があります。ApacheがFILE + SLASHのURLを書き換えないように設定する
私は、次の書き換えルールがあります。
service.php
に
service/...
で始まるURLをマップする必要があります
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^service/(.*)$ service.php?xyz=1 [L,QSA]
を。さて、問題は、service.xml
という名前のXMLファイルが.htaccess
と同じフォルダにある場合、URLは代わりにそのファイルにマッピングされることです。 PHPファイルが存在する場合、PHPファイルに移動します。 XMLファイルが優先されます。つまり、ディレクトリにXMLファイルと名前がservice.*
のPHPファイルがある場合、XMLファイルが選択されます。
私はMac OS X 10.7(Lion)上でPHP 5.3、Apache 2.xを使用しています。この問題は、以前はOS X 10.6を使用していたときに発生していなかったため、Appleが提供する設定にいくつか変更が必要です。私は何が分かりません。
これを無効にする方法はありますか?functoinality?
私は完全にオフトラックですか、何かばかげたドンギングですか?
ところで、これはmod_rewriteには関係ありません。有効にするか無効にするか、.htaccess
から書き換えルールを削除すると何かが変更されます。 URL service/my/parameter
は、mod_rewriteが無効になっていても、依然としてservice.xml/my/parameter
を指しています。
今のところ、URLからクエリ文字列を取り出し、PHPファイル内で手動で解析しました。しかし、私はそれがこれを行う正しい方法ではないことを知っています。
それは確かにそれでした。大いに感謝する。私は 'MultiViews'オプションについて知らなかった。 –
はい。かなり迷惑なものです。あなたがコンテンツのネゴシエーションを必要としない場合は、mod_negociate – regilero
を削除することもできます。私はそこに置くか、すでに存在しているかどうかはわかりません: "Options Indexes MultiViews"。私はMultiViewsという言葉を削除し、それを修正しました。本当にありがとう ! – Jake