重写的URL导致406错误

时间:2014-11-24 17:53:57

标签: php .htaccess http-headers swagger-ui http-status-code-406

我正在尝试创建RESTful API和文档。然而,我似乎得到一个奇怪的错误,我无法弄清楚如何解决。

这有效:

curl --header "Accept: application/json" http://api.example.com/v1/method.php?key=test

但是,如果你删除“.php”扩展名并运行它:

curl --header "Accept: application/json" http://api.example.com/v1/method?key=test

如果运行它,应该会收到406错误。现在,如果您删除curl发送的标头,则两个请求都可以正常工作。但是我正在使用的文档工具(swagger)需要它。

这是我的重写规则(找到here):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

1 个答案:

答案 0 :(得分:0)

尝试

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule method method.php [L]

您的操作没有失败。

您的后端服务表示客户端请求的Accept-Type HTTP标头中未提供它返回的响应类型。

参考:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

  • 找出服务返回的响应(内容类型)。
  • 在您的请求中提供此内容类型(内容类型)。

http://en.wikipedia.org/wiki/HTTP_status_code - > 406