匿名ユーザーをログインページにリダイレクトするためにdrupal 7のルールモジュールを使用しているため、イベント「Drupal is initializing」、条件「User has role」に反応するルールを作成しました匿名ユーザーと「サイトログインURLではありません」を使用して、サイトログインURLにアクション「ページリダイレクト」を追加しました。ルールをテストしようとしたときに、drupalがログインページにリダイレクトされ続けましたApacheサーバーが機能しなくなるまで繰り返します。
私がそれを次のように解決した方法:
条件:
Parameter: User: [site:current-user], Roles: anonymous user
Parameter: Text: [site:current-page:url], Matching text: user/login
アクション:ページリダイレクト-Parameter: URL: user/login
ルールを次のようにエクスポートします。
{ "rules_login" : {
"LABEL" : "login",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"TAGS" : [ "login" ],
"REQUIRES" : [ "rules" ],
"ON" : { "init" : [] },
"IF" : [
{ "user_has_role" : {
"account" : [ "site:current-user" ],
"roles" : { "value" : { "1" : "1" } }
}
},
{ "NOT text_matches" : { "text" : [ "site:current-page:url" ], "match" : "user\/login" } }
],
"DO" : [ { "redirect" : { "url" : "user\/login" } } ]
}
}
/admin/people/permissions
に移動し、[匿名ユーザーの公開コンテンツを表示する]チェックボックスをオフにします
/admin/config/system/site-information
に移動し、[アクセス拒否]ページのフィールドに「ユーザー」を追加します
ルールでこれを取り除くことができると確信していますが、テーマのtemplate.phpファイルでも簡単に実行できます。
このようなものがうまくいくはずです:
global $user;
if ($user->uid == 0 && arg(0) != 'user' && arg(1) != 'login'){
drupal_goto('user/login');
}
または、ユーザー/登録およびユーザー/パスワードのページへのアクセスが引き続き必要な場合:
global $user;
if ($user->uid == 0 && arg(0) != 'user'){
drupal_goto('user/login');
}
ここでの問題は、問題のイベントです。 Drupal is initializing
の代わりにContent is viewed
をお試しください。
これは2年前の投稿です。ただし、ルールを使用して匿名ユーザーをユーザーログインページにリダイレクトするソリューションは次のとおりです。
これが誰かを助けることを願っています。