小さなDrupal 7つのサイトで、常にログインする必要のない7つのサイトがあり、ユーザーがいません。ボットを阻止するために、ユーザーのログインパスを別のものに変更したいと思います。ターゲティングDrupal/userパス上のインストール。
どうすればこれを達成できますか?
CAPTCHAを追加できますが、パスも変更したいと思います。
Rename Admin Paths module を参照してください。このモジュールの目的は、管理パスを上書きすることにより、drupalバックエンドを保護することです。ユーザー/ログインをメンバー/ログインなどに変更できます。htaccessにリダイレクトを標準に追加することもお勧めしますuser/login user/register。ボットがこれらのページにアクセスしようとするときに、このようにDrupalが404を提供する必要もありません。大幅なパフォーマンスの節約になります。
編集:これについてさらに考えると、追加のモジュールはまったく必要ありません。ユーザー/ログイン、ユーザー/登録などのエイリアスを/admin/config/search/path/add
に追加してから、htaccessに古いエイリアスのリダイレクトを追加します。
1.ログインフォームは、次のような任意のサイトまたは任意のブロックでレンダリングできます。
_$form = drupal_get_form("user_login");
$form = drupal_render($elements);
print $form;
_
次に、このページに適切なエイリアスを設定するだけです。
2 .hook_preprocess_page(&$variables)
。
_$current_path = current_path();
$current_alias = drupal_get_path_alias($current_path);
if($current_alias == 'user'){
drupal_goto('my-url');
}
_
このシナリオで使用する迅速で簡単な解決策がありますが、モジュールは必要ありません。 htaccessを使用して、訪問者をユーザーまたはユーザー/ログインに404にリダイレクトします(または、訪問者がアクセスする頻度を追跡できるように、IPアドレスを記録する非表示のページにリダイレクトします)。次に、/ user/login/12345のようなURLの偽のパラメータを使用してログインしたい場合、これらのスパムボットの99%がスペースに送信されます:)
"user"を変更するにはいくつかの方法がありますDrupal "my-url"へのパス:
まず、Drupal defines ユーザーコアモジュールの「ユーザー」パス)の方法を模倣します。このようにして、「my-url」ページは、オリジナルのもの。
次に、作業を完了するには、すべての「ユーザー」リクエストを「my-url」パスにリダイレクトする必要があります。そのためには、 hook_menu_site_status_alter() フックを使用してカスタムコードを使用するか、または redirect module を使用できます。
カスタムコードを使用した簡単な実装を次に示します。
/**
* Implements hook_menu().
*/
function yourmodule_menu() {
// Registration and login pages.
$items['my-url'] = array(
'title' => 'User account',
'title callback' => 'user_menu_title',
'page callback' => 'user_page',
'access callback' => TRUE,
'file' => 'user.pages.inc',
'weight' => -10,
'menu_name' => 'user-menu',
'file path' => drupal_get_path('module', 'user'),
);
return $items;
}
/**
* Implements hook_menu_site_status_alter().
*/
function yourmodule_menu_site_status_alter(&$menu_site_status, $path) {
if ($path == 'user') {
drupal_goto('my-url');
}
}
注:リダイレクトモジュールは機能モジュールと統合されていません。この変更をすべての環境に自動的に伝播する場合は、カスタムコードを使用することをお勧めします。
例:
/**
* Implements hook_url_outbound_alter().
*/
function custom_module_url_outbound_alter(&$path, &$options, $original_path) {
// Alter paths for login and sign-up pages.
if ($path === 'user/login' || $path === 'user/sign-up') {
$path = 'omfg';
}
}