在您的网址经理(保护/配置/ 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