drupalサイトでログインを無効にしたいのですが、フォームを非表示にすることもできます。ログインが必要な場合は、sshセッションから有効にして、無効にしてからもう一度無効にします。
私はこれを.htaccessの書き換えルールで行うことを好みますが、正しいルールを理解できません。
更新(これはよくある質問のようです)
私はこのような.htaccessになりました:
# disable well known Drupal user login endpoints
RewriteCond %{QUERY_STRING} q=user
RewriteRule ^/?$ http://%{HTTP_Host}/? [R=307,L]
RewriteRule ^user$ http://%{HTTP_Host}/ [R=307,L]
RewriteRule ^user/register$ http://%{HTTP_Host}/ [R=307,L]
# goto user login with that "secret" URL
RewriteRule ^op9__P87? /user [NC]
別の方法は、ログインフォームへのアクセスをfalseに設定することです。ログインを再度有効にする場合は、フックをコメント化してください。
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'user_login') {
$form['#access'] = FALSE;
}
}
たぶん Login Disable module が役に立ちますか?
Drupalサイトにログインできないようにします。ただし、?q = userログインフォームページの最後に追加する秘密鍵を知っている場合を除きます。ユーザーが秘密鍵を知った場合、認証中は、ユーザーアカウントの役割が引き続きチェックされます。「無効なログインのバイパス」が許可されていない場合は、アクセスが拒否され、カスタマイズ可能な「拒否された」メッセージが表示されます。
問題は、Drupalの問題ではなく、Apacheの構成の問題にあります。また、1つのページにあるユーザーログインフォームに依存しています。
# Pass all requests not referring directly to files in the filesystem to
# index.php. Clean URLs are handled in drupal_environment_initialize().
RewriteRule ^user$ - [G,L]
RewriteRule ^q=user$ - [G,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]
q=user
ルールは、q=user
はログインページで終了します。
ユーザーのログインを無効にするモジュールがいくつかあることに注意してください(@Jonathan Rownyの提案など)。これは、シナリオによっては、より適切なオプションになる場合があります。