2011-08-02 16 views
2

私のアプリケーションには「admin」というモジュールがあります。これは/ mysite/adminからアクセスできます。サイトのセキュリティを向上させるために、私はこのURLを通常のユーザーに推測するのが難しいものに変更し、サイト管理者だけが知りたいと思っています。Yiiフレームワーク - モジュールのURLを変更する

私はurlManagerルールを試みたが、例えば、望ましい結果を得ることができませんでした:

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

しかし、これは、これらの2つのURLのために動作します。

私が今考えている唯一のことは、実際のモジュールの名前を変更することです。モジュール名は、アプリケーション全体で多く参照されるので、やりにくいです。誰も他の提案がありますか?

答えて

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

ur参照用のthanx。 – viji

0

追加してみてください:

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

はい。それは働いている。古いURLでもまだ利用可能です。 speicifiedパスに制限したり、リダイレクトする方法は他にありますか? – 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>', 
     ) 
    ), 
関連する問題