2010-09-13 112 views
0

我打算在CodeIgniter中重新創建我的歌詞網站。 此刻,我的方式把它建立是這樣的:
example.com/artistnameexample.com/anotherartistCodeIgniter網址幫助

我也有example.com/contactexample.com/request等。

我可以得到它是example.com/artist/artistname,但我d真的很想讓用戶記住這些URL。

任何人都可以幫我解決這個問題嗎?

感謝, Maikel

回答

3

application/config/routes.php嘗試:

$route['contact'] = 'contact'; // /contact to contact controller 
$route['request'] = 'request'; // /request to request controller 
$route['(.*)'] = 'artist/display/$1'; // anything to artist controller, display method with the string as parameter 
+0

非常感謝:D – Maikel 2010-09-13 03:21:23

0

通過這裏的CodeIgniter用戶指南:http://codeigniter.com/user_guide/general/routing.html

可以重新映射任何東西(:any)到您的artist控制器。從那裏,您可以將contact,request等重新映射到它們各自的控制器/函數,或者您可以使用您的構造函數來檢查它們並調用正確的函數。例子:

使用URI路徑:

$route['contact'] = "contact"; 
$route['request'] = "request"; 
... // etc... 
$route['(:any)'] = "artist/lookup/$1"; // MUST be last, or contact and request will be routed as artists. 

使用您的構造函數:

public function __construct($uri) { 
    if ($uri == "contact") { 
     redirect('contact'); 
    } elseif ($uri == "request") { 
     redirect('request'); 
    } 
} 

這種方法,但是,可能會導致一個無限循環。我不會建議它,除非你的contactrequest功能在同一個控制器。那麼你可以用$this->contact()$this->request()而不是重定向來打電話給他們。

+0

您仍然必須將藝術家的姓名傳遞給控制器​​函數:'$ route [':any'] =「artist/lookup/$ 1」;' – Mischa 2010-09-13 01:12:07

+0

根據用戶指南, 你不。但爲了確保你得到你想要的東西,我同意。我會做出改變。 – Micheal 2010-09-13 01:22:01

+0

:任何轉換爲​​。+的路由基本上只是正則表達式。如果你錯過了(),那麼你不能使用$ 1。完整的路由是$ route ['(:any)'] =「artist/lookup/$ 1」; – 2010-09-14 09:31:54