2013-10-03 5 views
1

Клиент запрашивает изображение:Apache 2 MultiViews и 406 ошибки для изображения/* Запрос

GET /api/2.0/users/80.png HTTP/1.1 
Host: learnwithecho.com 
Proxy-Connection: keep-alive 
Accept-Encoding: gzip, deflate 
Accept: image/* <------------------------------ HERE'S THE IMPORTANT PART 
Accept-Language: en-us 
Connection: keep-alive 
User-Agent: Echo/1.0.16.1 CFNetwork/672.0.2 Darwin/12.5.0 

И у меня есть скрипт на API/2.0/users.php (да, PATH_INFO включен)

... 
header('Content-Type: image/png'); 
$user = User::getUserWithID($filename); 
header("Location: ".$user->getImageURL()); 
exit(0); 

Но Apache или PHP пытаются вести себя так, как будто он меня знает ... и это не так. Он предполагает, что PHP-скрипт не мог бы ответить на изображение/png, и он выдает ошибку 406 Not Acceptable.

Могу ли я успешно настроить Apache/PHP для ответа на этот запрос?

+0

Связанные темы: http://stackoverflow.com/questions/12084283/406-server-error http://stackoverflow.com/questions/14251851/what-is-406-not-acceptable-response-in -http http://www.gerd-riesselmann.net/archives/2005/04/beware-of-apaches-multiviews –

+0

И http://stackoverflow.com/questions/14233146/406-error-not-acceptable-openwysiwyg -v1-4-7-while-image-selection –

ответ

2

Могу ли я успешно настроить Apache/PHP для ответа на этот запрос?

Да. Просто используйте MultiviewsMatch директиву сказать Apache, что он может служить .php файлы, независимо от того, совместим с Accept заголовком их MIME тип:

<Files "*.php"> 
    MultiviewsMatch Any 
</Files> 

Из документов, эффект заключается в следующем:

Вы можете, наконец, разрешить расширения Any, даже если mod_mime не распознает расширение.

-1

Вам необходимо либо отключить MultiViews в этом контексте или создать фиктивные копии вашего сценария с расширениями, которые говорят mod_negotiation какие Mimetypes он может генерировать (на самом деле не рекомендуется)

как есть, mod_negotiation не имеет возможности зонд, для каких типов может быть создан users.php.

+0

Или я могу отключить mod_negotiation для этого запроса? –

+0

Что-то вроде: Опции -MultiViews Или в регулярных выражениях формы, если вам нужно знать, расширение, переносить другие версии, и т.д. – covener

+0

Если у вас есть доступ к .htaccess только , это будет работать: Options -MultiViews