2009-12-31 52 views
1

我想安排一些事情,以便GET請求例如配置Apache將「GET/user/foo」路由到/user/GET.php和「PUT/user/foo」到/user/PUT.php

http://example.com/user/[email protected] 

內部調用腳本

/var/www/example.com/rest/user/GET.php 

和相同的URL PUT請求在內部調用腳本

/var/www/example.com/rest/user/PUT.php 

等爲其他HTTP動詞POST和DELETE。

通過<Script>指令幾乎可以實現這個目標,但它不太可行,因爲「Script with a method of GET will only be called if there are query arguments present」。這意味着,如果Apache經由

<Location /user> 
Script GET /rest/user/GET.php 
Script PUT /rest/user/PUT.php 
</Location> 

配置然後,同時GET請求用於

http://example.com/user/[email protected]?foo=bar 

將調用GET.php,如果請求不包含查詢字符串「富=欄」,它不「T。

(另外,爲什麼<Script>這樣設計擺在首位?)

回答

2

你可以在REQUEST_METHOD

如使用mod_rewrite利用一個RewriteCond的:

RewriteCond %{HTTP_METHOD} ^GET$ 
+0

其實我嘗試了首先是mod_rewrite解決方案,但由於其他原因(ScriptAlias和/或FastCGI驅動的PHP出錯)似乎更難解決......如果你確實有這個工作,你可以發佈你的Apache conf嗎? – mjs 2009-12-31 02:52:46