2013-05-21 50 views
0

我拼命嘗試構建一個類似API的REST。因此,我創建了一個.htaccess文件,它應該根據請求方法將請求重定向到正確的文件。apache htaccess多個http方法條件

我設法讓GET和POST請求工作正常,但是當我嘗試添加第三個請求方法(如PUT或DELETE)時出現問題。

這是我的htaccess(短路):

####################### 
# GET DATA URIs 
####################### 
RewriteCond %{REQUEST_METHOD} =GET 

##### EMPLOYEE 
# Load all employees 
RewriteRule ^rest/employee$ /moduls/employee/rest/get/get_all.php 
# get all data form a specific employee 
RewriteRule ^rest/employee/([0-9]*)$ /moduls/employee/rest/get/get.php?id=$1 
# And the employee sub resources 
# BASE DATA 
RewriteRule ^rest/employee/([0-9]*)/base_data$ /moduls/employee/rest/get/base_data.php?id=$1 
# CONTRACT DATA 
RewriteRule ^rest/employee/([0-9]*)/contract$ /moduls/employee/rest/get/contract.php?id=$ 
####################### 
# CREATE DATA URIs 
####################### 
RewriteCond %{REQUEST_METHOD} =POST 
# REST URLs for employee 
# Add new employee 
RewriteRule ^rest/employee$ /moduls/employee/rest/add.php 

####################### 
# EDIT DATA URIs 
####################### 
RewriteCond %{REQUEST_METHOD} =PUT 
##### EMPLOYEE 
RewriteRule ^rest/employee/([0-9]*)/base_data$ /moduls/employee/rest/edit/base_data.php?id=$1 

當我開始rest/employee這取決於其上執行腳本的方法的請求。這工作正常,但是當我嘗試使用PUT請求加載/rest/employee/XXX/base_data時,apache總是將我重定向到允許GET請求時應執行的腳本。

我很新爲.htaccess並不能看到那裏的錯誤是: -/

回答

0

我很好奇,你爲什麼決定來處理在Apache中,而不是在應用層路由邏輯。您可以輕鬆地將單個FallbackResource聲明指向將所有請求指向前端控制器,並讓該前端控制器檢查傳入請求以執行路由。隨着您向RESTful服務添加更多端點,這將更加靈活。

+0

好,首先感謝您的關注。它有點困難。程序在每個腳本之間真的很嚴格。每個文件都有一個目的。他們共享很多代碼(由於大小的原因只是必須的),也是模塊設計的一部分,但那不是問題的關鍵;)任何想法可能會在上面發生什麼? – mercsen