J'ai quelques petits Drupal 7 sites qui ne nécessitent pas que je me connecte tout le temps, et il n'y a pas d'utilisateurs. Je voudrais changer le chemin de connexion utilisateur pour autre chose pour dissuader les bots ciblage Drupal sur le chemin/user.
Comment puis-je atteindre cet objectif?
Je peux ajouter un CAPTCHA, mais je veux aussi changer le chemin.
Voir Renommer le module Admin Paths . Le but de ce module est de sécuriser drupal backend en redéfinissant le chemin d'administration. Vous pouvez changer l'utilisateur/login en quelque chose comme membre/login. Je suggère également d'ajouter une redirection dans votre htaccess vers la norme user/login user/register. De cette façon Drupal ne doit pas non plus servir le 404 lorsqu'un bot essaie d'accéder à ces pages. D'énormes économies de performances.
EDIT: En y réfléchissant davantage, vous n'avez pas du tout besoin d'un module supplémentaire. Ajoutez simplement un alias à /admin/config/search/path/add
pour utilisateur/connexion, utilisateur/registre, etc., puis ajoutez simplement des redirections dans votre htaccess pour les anciens alias.
1.Vous pouvez afficher le formulaire de connexion sur n'importe quel site ou dans un bloc comme celui-ci:
$form = drupal_get_form("user_login");
$form = drupal_render($elements);
print $form;
Il vous suffit alors de définir l'alias approprié pour cette page.
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');
}
J'ai une solution rapide et facile que j'utilise pour ce scénario sans modules requis. Utilisez htaccess pour rediriger tous les visiteurs vers un utilisateur ou un utilisateur/connexion vers un 404 (ou je les redirige vers une page cachée qui enregistre leur adresse IP afin que je puisse suivre la fréquence à laquelle ils visitent). Ensuite, lorsque vous souhaitez vous connecter, utilisez simplement un faux paramètre dans l'URL comme/user/login/12345 Cela enverra 99% de ces robots indésirables dans l'espace :)
Vous avez quelques approches pour changer le "utilisateur" Drupal chemin vers "my-url":
Tout d'abord, vous imitez la manière Drupal définit le chemin "utilisateur" sur le module de base de l'utilisateur. De cette façon, votre page "my-url" aura le même comportement que la d'origine.
Ensuite, pour terminer le travail, vous devrez rediriger toutes les demandes "utilisateur" vers votre chemin "my-url". Pour ce faire, vous pouvez utiliser du code personnalisé en utilisant le crochet hook_menu_site_status_alter () ou vous pouvez utiliser le module de redirection .
Voici une implémentation rapide avec du code personnalisé:
/**
* 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');
}
}
Remarque: le module de redirection n'est pas intégré au module de fonctionnalités. Si vous souhaitez propager automatiquement ce changement dans tous vos environnements, je vous suggère d'utiliser du code personnalisé.
Exemple:
/**
* 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';
}
}