2010-01-22 98 views
3

我很難讓我的頭腦使用REST風格的URLS。我可以得到一些幫助嗎?現在我有一個查詢字符串,像這樣:REST風格的URL和PHP

example.com/calendar_expanded?date=1270094400

我有一個國防部重寫是在隱瞞了PHP擴展。我如何

  1. 使這個calendar_expanded/date/1270094400發生。
  2. $_GET從事後的URL值?

我喜歡背後的概念,但每天工作16個小時以滿足整個月的截止日期對我的大腦產生影響。

感謝您的幫助。

+1

也許只需要更新您的重寫規則是這樣的:'重寫規則^ calendar_expanded /日期/ ([0-9] +)$ calendar_expanded.php?date = $ 1' – anomareh 2010-01-22 22:46:30

回答

3

如果您想創建相當多的REST URL,您應該考慮使用利用Front Controller設計模式的PHP框架。

這樣,每個請求都由框架處理,您可以靈活地設計您的URL,但它們應該看起來像。

E.g. Symfony支持開箱即用的REST風格設計。

順便說一句,如果參數在某種程度上是固定的並指定了資源,例如博客文章的標題,那麼RESTful URL纔有意義。如果您只想將參數傳遞給控制一個表的排序(即某些東西的視圖),那麼這應該作爲查詢字符串中的「普通」GET參數。

在你的情況下,它看起來像你想控制哪一天應該顯示在日曆中。我個人會在這裏使用普通的GET查詢字符串。

+0

Kohana是我們工作時使用的框架。它默認將一個像example.com/my_controller/controller_method/param1/param2這樣的URL路由到一個名爲「controller_method」的控制器中,該控制器名爲「my_controlled」,參數「param1」和「param2」...漂亮NEATO。 – sberry 2010-01-22 23:10:51

+0

我認爲這是最正確的答案,費利克斯看着我真正想做的事情。你是對的,我通過日期變量來控制日曆。我想我會堅持我現有的格式。我將閱讀這篇文章,因爲我覺得它可能在某些時候派上用場。謝謝。 – jay 2010-01-23 03:12:17

+2

+1用於區分REST和外觀漂亮的網址。我看到一些混淆,人們認爲通過使用URL重寫,他們使他們的應用程序成爲RESTful--事情並非總是如此。 – 2010-01-23 16:18:11

3

您需要檢查$_SERVER[ 'REQUEST_URI' ]$_SERVER[ 'PATH_INFO' ]而不是$_GET

$_SERVER[ 'REQUEST_URI' ]將保持這個/calendar_expanded/date/1270094400?quertStringParams=1&etc...
$_SERVER[ 'PATH_INFO' ]將保持這個/calendar_expanded/date/1270094400

換句話說,你必須將這些值分解成其單獨的部分,通過使用explode()和喜歡。我建議你使用$_SERVER[ 'PATH_INFO' ]作爲主題,因爲真正的查詢字符串變量已經在$_GET中可用。

2

這是你在找什麼?

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ calendar_expanded.php?url=$1 [QSA,L] 
</IfModule> 

這是我記得的CakePHP做的,當它第一次來到了......說不上來,如果它仍然沒有...