我希望此网址/admin/personal/index
运行personal
控制器和index
操作,因此我将此规则添加到urlManager
'admin/<controller>/<action>' => '<controller>/<action>'
但似乎他认为admin
- 是控制者而personal
- 是行动。但我想忽略admin
部分网址。我怎样才能实现它? (如果可能的话,没有.htaccess)
也尝试使用Jorgen的解决方案,但仍然会出现404错误。在日志中这一行:
Request parsed with URL rule: <module:\w+>/<controller:\w+>/<action:\w+>
'urlManager' => [
'showScriptName' => false,
'enablePrettyUrl' => true,
'rules' => [
'admin/<controller:\w+>/<action:\w+>' => '<controller>/<action>',
],
],
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
只有在我写下一条规则
时才有效'<module:\w+>/<controller:\w+>/<action:\w+>' => '<controller>/<action>',
但在这种情况下,'admin'前缀当然不会添加到url。但直接,它运作正常。
我找到了原因:共同配置中还有另一条规则。
Thx, Jorgen ,求助! 问题已结束。
答案 0 :(得分:0)
试试这个:
'admin/<controller:\w+>/<action:\w+>' => '<controller>/<action>'
您需要为参数指定正则表达式。
如果在此设置之前有<controller:\w+>/<action:\w+>
的参数,则可能还会发生冲突。尝试将其作为第一个参数。
来自docs
URL规则可以与一些命名查询参数相关联,这些参数在模式中以格式指定,其中ParamName指定参数名称,RegExp是用于匹配参数值的可选正则表达式。如果未指定RegExp,则表示参数值应为不带任何斜杠的字符串。
注意:您只能为参数指定正则表达式。模式的其余部分被视为纯文本。