Настройка Apache, чтобы не переписывать URL для FILE + SLASH - PullRequest
1 голос
/ 09 декабря 2011

У меня есть проблема, когда все URL-адреса, такие как context/path/file/anything/that/follows, становятся context/path/file.php/anything/that/follows или context/path/file.xml/anything/that/follows.

. У меня есть следующее правило перезаписи:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^service/(.*)$ service.php?xyz=1 [L,QSA]

, которое должно сопоставлять любой URL-адресначиная с service/... до service.php.Теперь проблема в том, что если файл XML с именем service.xml находится в той же папке, что и .htaccess, URL-адреса сопоставляются этому файлу.Если файл PHP существует, они идут в файл PHP.Файл XML имеет приоритет, т. Е. Если в каталоге есть и файл XML, и файл PHP с именем service.*, файл XML выбирается.

У меня есть PHP 5.3, Apache 2.x,на Mac OS X 10.7 (Lion).Эта проблема ранее не возникала, когда у меня была OS X 10.6, поэтому должны быть некоторые изменения в конфигурациях, предоставленных Apple.Я просто не могу понять, что.

Есть ли способ, которым я мог бы отключить эту functoinality ?

Или я совершенно не в курсе, и что-то не так глупо?

Кстати, это не относится к mod_rewrite, поскольку его включение или отключение или удаление правила перезаписи из .htaccess изменяет что-либо.URL service/my/parameter по-прежнему указывает на service.xml/my/parameter, даже если mod_rewrite отключен.

На данный момент я только что извлек строку запроса из URL-адреса и проанализировал ее вручную в файле PHP.Но я знаю, что это неправильный способ сделать это.

1 Ответ

3 голосов
/ 09 декабря 2011

Похоже, включена опция MultiViews .

Попробуйте добавить Options -MultiViews в раздел <Directory> (или .htaccess).

...