我很難讓我的頭腦使用REST風格的URLS。我可以得到一些幫助嗎?現在我有一個查詢字符串,像這樣:REST風格的URL和PHP
example.com/calendar_expanded?date=1270094400
我有一個國防部重寫是在隱瞞了PHP擴展。我如何
- 使這個
calendar_expanded/date/1270094400
發生。 $_GET
從事後的URL值?
我喜歡背後的概念,但每天工作16個小時以滿足整個月的截止日期對我的大腦產生影響。
感謝您的幫助。
我很難讓我的頭腦使用REST風格的URLS。我可以得到一些幫助嗎?現在我有一個查詢字符串,像這樣:REST風格的URL和PHP
example.com/calendar_expanded?date=1270094400
我有一個國防部重寫是在隱瞞了PHP擴展。我如何
calendar_expanded/date/1270094400
發生。$_GET
從事後的URL值?我喜歡背後的概念,但每天工作16個小時以滿足整個月的截止日期對我的大腦產生影響。
感謝您的幫助。
如果您想創建相當多的REST URL,您應該考慮使用利用Front Controller設計模式的PHP框架。
這樣,每個請求都由框架處理,您可以靈活地設計您的URL,但它們應該看起來像。
E.g. Symfony支持開箱即用的REST風格設計。
順便說一句,如果參數在某種程度上是固定的並指定了資源,例如博客文章的標題,那麼RESTful URL纔有意義。如果您只想將參數傳遞給控制一個表的排序(即某些東西的視圖),那麼這應該作爲查詢字符串中的「普通」GET參數。
在你的情況下,它看起來像你想控制哪一天應該顯示在日曆中。我個人會在這裏使用普通的GET查詢字符串。
Kohana是我們工作時使用的框架。它默認將一個像example.com/my_controller/controller_method/param1/param2這樣的URL路由到一個名爲「controller_method」的控制器中,該控制器名爲「my_controlled」,參數「param1」和「param2」...漂亮NEATO。 – sberry 2010-01-22 23:10:51
我認爲這是最正確的答案,費利克斯看着我真正想做的事情。你是對的,我通過日期變量來控制日曆。我想我會堅持我現有的格式。我將閱讀這篇文章,因爲我覺得它可能在某些時候派上用場。謝謝。 – jay 2010-01-23 03:12:17
+1用於區分REST和外觀漂亮的網址。我看到一些混淆,人們認爲通過使用URL重寫,他們使他們的應用程序成爲RESTful--事情並非總是如此。 – 2010-01-23 16:18:11
您需要檢查$_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
中可用。
這是你在找什麼?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ calendar_expanded.php?url=$1 [QSA,L]
</IfModule>
這是我記得的CakePHP做的,當它第一次來到了......說不上來,如果它仍然沒有...
也許只需要更新您的重寫規則是這樣的:'重寫規則^ calendar_expanded /日期/ ([0-9] +)$ calendar_expanded.php?date = $ 1' – anomareh 2010-01-22 22:46:30