2015-04-27 2 views
0

Недавно я использовал Apache RewriteEngine (мод-перезаписи), чтобы попытаться перезапись этого файла:Найдено ошибка с использованием Apache mod_rewrite

api.access.php 

в этот каталог:

/api 

используя этот RewriteRule:

RewriteRule ^api$ api.access.php [L,QSA] 

, но он все время не работает.

Странно, заменив /api на другую строку, например /apis. так в чем была проблема?

ответ

3

На самом деле это не совсем ошибка. Apache довольно хорошо тестируется в течение длительного времени. Что вы возможно работает в content Negotiation и MultiViews. Это может вызвать забавный бизнес.

Так что ваш ответ действительно никому не поможет, поскольку изменение имени файла не является решением. Вероятно, вам просто нужно было отключить MultiViews.

Options -MultiViews 
RewriteEngine on 
RewriteRule ^api/?$ api.access.php [L,QSA] 

Подробнее о MultiViews

Эффект MultiViews заключается в следующем: если сервер получает запрос на/некоторые/дир/обув, если/некоторые/реж позволило MultiViews, и /some/dir/foo не существует, тогда сервер читает каталог , ища файлы с именем foo. * и эффективно подделывает карту типа , которая называет все эти файлы, назначая им те же типы носителей и content-encodings это было бы, если бы клиент попросил одного из их по имени. Затем он выбирает наилучшее соответствие требованиям клиента .

+0

спасибо! Я не знал о MultiViews – Frank

0

Проблема оказалась именем файла, который я пытался заменить (api.access.php), потому что он начинался с api.

Изменение имени файла на access.api.php исправлено.

Надеюсь, что это полезно для всех, кто там есть.

Приветствия