在您的網址經理(保護/配置/ main.php),設置urlFormat
到path
(和toptionally設置showScriptName
到false
(這個隱藏URL的index.php的一部分))
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName'=>false,
接下來,在你的規則,你可以設置類似:
catalogue/<category_url:.+>/<product_url:.+> => product/view,
所以這樣做是什麼路線,並要求與像目錄/ EL的結構ectronics/ipods到ProductController actionView。然後,您可以訪問URL的category_url
和product_url
部分,像這樣:
$_GET['category_url'];
$_GET['product_url'];
這個規則是如何工作的,它與字目錄(你的域名後直接)開頭的URL後面是另一個詞( category_url
)和另一個詞(product_url
)將被引導至該控制器/動作。
你會注意到,在我的例子中,我在類別和產品的單詞目錄之前。顯然你可以用你喜歡的任何東西來代替它,或者把它全部放在一起。我已經把它的原因,請考慮以下網址:
http://mywebsite.com/site/about
如果你離開了URL的「目錄」部分,並定義了規則只爲:
<category_url:.+>/<product_url:.+> => product/view,
的URL經理會將URL的網站部分看作category_url
值,將大約部分看作product_url
。爲了防止這種情況,你可以有網址的目錄protion,或定義的非目錄頁的規則(即,定義規則網站/約)
規則解釋從上到下,只有第一規則匹配。很明顯,您可以根據需要爲儘可能多的不同網址結構添加儘可能多的規則。
我希望這可以讓你在正確的道路上,隨時與任何疑問或說明你需要
不錯的答案,很高興看到不同的方法。 Upvoted – 2013-03-05 22:54:58
愚蠢的問題,但在這個例子中,你會在哪裏放置文件?新的CarUrlRule類文件? – coderama 2013-03-07 19:09:09
可能在你的組件文件夾中 – acorncom 2013-03-07 19:51:38