我使用菲爾鱘魚的REST服務器笨和要修改的功能,這樣我就可以支持URL這樣的:如何使用.htaccess修改Phil Sturgeon的CodeIgniter REST庫的功能,以便可以在URL中傳遞對象ID?
http://api.example.com/users
http://api.example.com/users/1
分別獲得用戶的列表和單個用戶,而不是那些支持像這樣的:
http://api.example.com/users
http://api.example.com/users?id=1
我看到他blog that this should be possible using mod_rewrite,但一直未能得到這個工作預期。
默認笨的.htaccess看起來是這樣的:
RewriteEngine on
RewriteCond $1 !^(index\.php|css|images|js|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
我試圖加入我自己的規則來嘗試實現這一功能。這是我期望正確工作的一個。它位於RewriteEngine激活之後和CodeIgniter規則之前。
RewriteRule ^users/([0-9+]) /users?id=$1 [NC]
我想通那麼這將級聯到下一個規則,將通過笨,然後打的路線正確users.php
控制器,那麼index_get
方法(通過REST服務器作爲重新映射)。
相反,我得到一個「未知的方法」的錯誤 - 它看起來好像笨試圖使用用戶整數作爲函數,例如在users/12
它試圖找到users.php
的12()
方法。
有沒有人知道這裏出了什麼問題,或者可以推薦解決這個問題?
不要以爲這是你的問題,但是你在你的反向引用中缺少** $ **:'RewriteRule^users /([0-9 +])/ users?id = $ 1 [NC]' – 2012-07-24 06:54:46
對不起,我的壞 - 從我的.htaccess文件複製時發生意外。更新了問題 - 謝謝! – Dwight 2012-07-24 07:07:06
Phils庫支持像你演示的URL ..'site.com/users/1/format/json/X-API-KEY/foobar'只需啓用像@ JoshuaK的答案那樣的漂亮url即可。 – gorelative 2012-07-24 13:17:49