2014-11-24 168 views
0

我正在尝试创建一个RESTful API和文档。不过,我似乎正在得到一个奇怪的错误,我不知道如何解决。重写的URL导致406错误

这工作:

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] 

回答

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

  • 查明响应(内容类型)的服务返回。
  • 在请求Accept头中提供此内容(内容类型)。

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

+0

还是一样的错误。 – kevc45 2014-11-24 18:04:51

+0

@ kevc45请关闭mod_security的 – 2014-11-24 18:17:29

+0

我用这个turnned关的mod_security:' SecFilterEngine关 SecFilterScanPOST关 '和勿庸置疑,我得到了同样的错误。 – kevc45 2014-11-24 19:15:23