我在我的应用程序中有一个名为'admin'的模块,可在/mysite/admin访问。为了提高网站的安全性,我想把这个URL改成一些更难以猜测的东西给普通用户,只有网站管理员才会知道。
我尝试了urlManager规则,但无法得到所需的结果,例如:
'admin-panel'=>'admin/default/index',
'admin-panel/login'=>'admin/default/login'
但这只适用于这两个url。
所以我现在唯一能想到的就是重命名实际的模块。模块名在整个应用程序中被引用了很多次,所以很难做到。有人有其他建议吗?
rules=>array(
'admin-panel' =>'admin',
'admin-panel/<_c:'w+>/<_a:'w+>/<id:'d+>' =>'admin/<_c>/<_a>/<id>',
'admin-panel/<_c:'w+>/<_a:'w+>' =>'admin/<_c>/<_a>',
'admin-panel/<_c:'w+>' =>'admin/<_c>',
)
但它只是别名-你的管理模块仍然可以通过/admin/URL。实际上,您必须检查用户的访问权限,不要试图隐藏您的管理面板
看一下权威指南中的URL管理(参数化路由)。像这样的代码应该可以完成工作:
array(
'<_c:(admin'-panel)>/<_a>' => 'admin/default/<_a>',
)
但是你只是在admin模块中'重命名'你的默认控制器,它仍然可以在你的旧URL下访问。
尝试添加:
'admin-panel'=>'admin',
'admin-panel/<controller:'w+>'=>'admin/<controller>',
'admin-panel/<controller:'w+>/<action:'w+>'=>'admin/<controller>/<action>',
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'module/<module:'w+>/<controller:'w+>/<action:'w+>'=>'<module>/<controller>/<action>',
'module/<m:'w+>/<c:'w+>/<a:'w+>'=>'<m>/<c>/<a>',
)
),