2014-11-24 175 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