我有类似的url
localhost/abc.com/info/c/q/Best%20Men
这里info是控制器,c是动作,q是查询id。
我想通过删除c/q/并使用非空间url来动态重写这些url。例如像这个
localhost/abc.com/info/Best_Men
可以使用urmanager吗???
我试过这个代码,但它不起作用
'info/c/<q:d+>'=>'info/<q:d+>',
[编辑后]
我的配置包含这个
'urlManager'=>array(
'urlFormat'=>'path',
'showScriptName'=>false,
'caseSensitive'=>false,
'urlSuffix'=>'.html',
'urlFormat'=>'path',
'rules'=>array(
'info/<q:w+>' => 'info/c'
),
),
更多的解释这里是什么是我的网址
http://localhost/abc.com/mycontroller/myactionsearch?q=Best
它会返回我搜索项目的列表,点击它打开的任何链接,例如点击伴郎打开下面的链接
http://localhost/abc.com/mycontroller/myactionItem/q/Best%20Men
所以实际上我在同一个控制器中有两个不同的操作,现在我想让它像一样运行
http://localhost/abc.com/mycontroller/Best%20Men
或
http://localhost/abc.com/mycontroller/myactionItem/Best%20Men
但使用上面的配置会出现找不到页面的错误
由于以下几个原因,该路由是错误的:
- 它与特定查询不匹配(
d
表示"数字",因此它与"Best_Men"不匹配) - 它不转发到有效的控制器操作
- 这对值应该切换
相反,你想要更类似的东西
'info/<q:w+>' => 'info/c'