我想将对控制器的每个请求重定向到单个动作。不会有静态内容-动作将自行处理路由。例子:
Controller/ => controller/index
Controller/action => controller/index
Controller/action/ => controller/index
Controller/action/dynamicparameter => controller/index
我在controller* => controller/index
的帮助下尝试了Yii1的建议,但是它不起作用。我尝试了controller/* => controller/index
,但也没有成功。当我给它controller/<action:\w+>
时,我可以使用控制器/动作,但仅此而已。
有什么想法吗?
答案 0 :(得分:0)
如果操作的位置将在url中更改,则您将不得不使用它来达到您的实际需求。
尝试将操作后的所有内容分配给某个参数。
'<controller:\w+>/<action:\w+>' => 'controller/index',
'<controller:\w+>/<action:\w+>/<actionId:[\w\/]*>' => 'controller/index'
在这种情况下,您将有一个名为actionId的附加$ _GET参数,该参数将存储所有操作后的内容(如果您有操作后的内容)。
示例:
controller1/someaction => controller/index actionId = null
controller1/someaction/ => controller/index actionId = null
controller2/actionwithparam/param1 => controller/index actionId = param1
controller3/actionwithparam/param1/param2 => controller/index actionId = param1/param2
另外请注意:在本示例中,我们仅将\ w作为正则表达式。这意味着网址部分只能包含A-Za-z0-9_