2012-07-05 66 views
1

我目前正在用Codeigniter構建一個Web應用程序。我注意到他們的文檔支持在查詢字符串上分段的URL,這很有意義,因爲它們更容易閱讀並且看起來更好。我也瀏覽threadless.com有一天,我真的很喜歡他們的方式格式化自己的疑問:替代查詢字符串格式

通常情況下,查詢應該是這樣的:

http://www.threadless.com/catalog/index.php?type=guys&view=25&size=3xl 

但Threadless的使用這種格式:

http://www.threadless.com/catalog/type,guys/view,25/size,3xl 

他們如何獲得該格式?它涉及.htaccess?這種格式是否與Codeigniter兼容,還是會涉及到自定義函數?

謝謝!

回答

3

你可以做同樣的事情,你可以有。

http://www.threadless.com/catalog/type/guys/view/25/size/3x1 

要做到這一點,你就會有一個控制器功能,如:

class Catalog extends CI_Controller { 
    function catalog() 
    { 
     $params = $this->uri->uri_to_assoc(3); 
    } 
} 

這將輸出類似:

Array 
(
    [type] => 'guys' 
    [view] => 25 
    [size] => '3x1' 
) 

如果你想逗號,你會想觸摸.htaccess將所有「,」重寫爲「/」。

RewriteCond %{REQUEST_URI} ^([^\,]*)\,(.*)$ 
RewriteRule .* %1/%2 [R=301,L] 
+0

真棒...工作得很好!謝謝一堆! – coryetzkorn 2012-07-05 16:07:57

+0

您是否知道是否有方法重寫URL而不使其在瀏覽器中可見?現在它將逗號轉換爲斜線,但如果逗號可以保留在URL中並仍然作爲斜線起作用,那將非常棒。 – coryetzkorn 2012-07-05 16:44:13

+0

我相信如果你刪除了應該修復它的'R = 301'。 – 2012-07-05 17:47:27

0

如果你使用Apache,那麼這將涉及任何的.htaccess,.htdocs,或httpd.conf文件(有多種方法)。關鍵是設置它,以便將名爲「catalog」的文件解析爲.php文件。然後,文件名後面的所有內容(/type,guys/view,25/size,3xl)都會作爲$_SERVER['PATH_INFO']傳遞給腳本,您可以自行解析。

不確定CodeIgniter如何正確工作或者它是否具有以不同方式執行此操作的功能。