客户正在请求图片:
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脚本无法使用image / png进行响应,并且会引发406 Not Acceptable
错误。
我是否可以成功配置Apache / PHP以响应此请求?
答案 0 :(得分:2)
我是否可以成功配置Apache / PHP以响应此请求?
是。只需使用MultiviewsMatch
指令告诉Apache它可以提供.php
个文件,无论它们的MIME类型是否与Accept
标题兼容:
<Files "*.php">
MultiviewsMatch Any
</Files>
从文档中,效果如下:
即使
Any
无法识别扩展程序,您也可以最终允许mod_mime
个扩展程序匹配。
答案 1 :(得分:-1)
您需要在此上下文中禁用MultiViews,或者创建脚本的虚拟副本,其扩展名告诉mod_negotiation它可以生成哪种类型的mimetypes(不是真的推荐)
按原样,mod_negotiation无法探测users.php可以生成哪些类型。