2011-08-02 97 views
2

我的應用程序中有一個名爲'admin'的模塊,可以在/ mysite/admin訪問。爲了提高網站的安全性,我想將這個網址更改爲更難以猜測的東西,只有網站管理員才能知道。Yii框架 - 更改模塊URL

我試圖urlManager的規則,但不能獲得期望的結果,例如:

'admin-panel'=>'admin/default/index', 
'admin-panel/login'=>'admin/default/login' 

但這隻會爲這兩個網址。

所以我現在唯一能想到的就是重命名實際的模塊。模塊名稱在整個應用程序中被引用很多,所以這太難了。任何人有任何其他建議?

回答

1
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>', 
) 

但它只是別名 - 你的管理模塊將仍然可以通過/管理/ URL。其實你必須檢查用戶的訪問權限,不要試圖隱藏你的管理面板。

+0

是的。你是對的。但我想知道是否有任何方法可以隱藏,限制舊路? – viji

+0

那麼,如果請求模塊的名字是'admin',那麼你可以解析一個路由並拋出403 CHttpException(Forbidden)。它會將用戶重定向到/ site/error並顯示異常消息。 –

0

查看權威指南中的URL Management (Parameterizing Routes)。 這樣的事情應該做的工作:

array(
    '<_c:(admin\-panel)>/<_a>' => 'admin/default/<_a>', 
) 

但是,你只是「改名」的管理模塊中的默認控制器,它仍然是在舊的URL訪問。

+0

thanx for ur reference。 – viji

0

嘗試添加:

'admin-panel'=>'admin', 
'admin-panel/<controller:\w+>'=>'admin/<controller>', 
'admin-panel/<controller:\w+>/<action:\w+>'=>'admin/<controller>/<action>', 
+0

是的。這是工作。但它仍舊可以在舊網址中使用。有沒有其他的方式來限制或重定向到指定的路徑? – viji

+0

你可以嘗試設置一個通過Yii生成錯誤的「admin」規則 - 我不確定是否會導致問題,否則通過apache設置一些東西(在引導程序重寫之前在你的.htaccess中插入規則)或者重命名模塊。 – ldg

0
'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>', 
     ) 
    ),