mercredi, 29 octobre 2014 00:00

.htaccess: bloquer l'accès de votre site à des sites référents

Écrit par

Le titre n'est pas exact et devrait plutôt être : bloquer l'accès aux visiteurs de certains sites référents. Par exemple, on peut facilement imaginer des listes sur des sites servant de sources à des bots ou encore des liens monétisés vers votre site via adf.ly par exemple. Dans tous les cas, il y a un moment de bloquer les visiteurs utilisant ces sources.

 

Trouver les sites référents

Ici, je ne vous apprendrai rien, il faut scruter vos stats ! Que vous utilisiez Google Analytics, Piwik ou encore AWStats, vous pouvez, dans tous les cas obtenir une liste de sites référents, soit des liens de ces sites vers le vôtre. Ceci marche également avec les raccourcisseurs d'URL de type adf.ly.

Une fois votre analyse terminée, vous pourriez avoir envie de bloquer, au moins provisoirement, les visiteurs provenant de ces sites ce qui risque d'avoir comme conséquence de calmer un peu celui qui fait ces liens s'il est suffisamment attentif. Dans le cas contraire, le site référent disparaîtra de vos statistiques car il va être bloqué directement par le serveur Apache via le .htaccess. Forcément, c'est un peu violent comme méthode.

Bloquer un site référent

Bloquer un seul site référent

Pour ce premier exemple, nous allons utiliser exemple1.com. Vous devrez, bien évidemment, remplacer ces lignes par le domaine que vous désirez bloquer sans oublier les \.

# Blocage de sites référents
RewriteEngine on
RewriteCond %{HTTP_REFERER} exemple1\.com [NC]
RewriteRule .* - [F]

Maintenant, faisons la même chose avec www.exemple1.com:

# Blocage de sites référents
RewriteEngine on
RewriteCond %{HTTP_REFERER} www\.exemple1\.com [NC]
RewriteRule .* - [F]

Bloquer plusieurs sites référents

Le code est assez simple. Nous allons utiliser exemple1.com et www.exemple2.com dans l'exemple suivant. À vous de remplacer ces lignes par les domaines que vous voulez :

# Blocage de sites référents
RewriteEngine on
RewriteCond %{HTTP_REFERER} exemple1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} www\.exemple2\.com [NC]
RewriteRule .* - [F]

Utiliser un générateur

Si vous êtes très paresseux, vous pouvez également utiliser un générateur .htaccess qui créera pour vous le fichier à copier-coller dans votre fichier original. Là, il n'y a pas plus simple.

Rediriger les visiteurs vers une page spécifique

Dans les exemples ci-dessus, vous empêchez littéralement les visiteurs de se connecter. C'est un peu sauvage, surtout qu'en général, le visiteur ne comprendra pas pourquoi la page ne s'affiche pas.

Dans ce cas, vous pouvez rediriger les utilisateurs vers une page spécifique créée pour l'occasion ou encore une page erreur. Pour cela, créez votre page au format html et mettez-là à la racine de votre site.

Ensuite, par rapport aux exemples précédents, remplacez cette ligne (en remplaçant "ma_page.html" par la vôtre) :

RewriteRule .* - [F]

Par celle-ci:

RewriteRule ^ /ma_page.html [L,R]

Si vous êtes motivé, vous pouvez même créer une page personnalisé par référent bloqué en reprenant le premier exemple et en le dupliquant, en prenant soin de bien changer la ligne RewriteRule à chaque fois.

Conclusion

Simple et efficace ! Avec le générateur c'est encore plus facile. Ainsi, si adf.ly vous ennuie, le bloquer devient super simple, invalidant ainsi l'ensemble des liens raccourcis avec ce service publicitaire.

Vous pouvez même envoyer un petit message aux visiteurs qui passeraient par ces liens en leur créant une petite page dédiée.

 

1 Commentaire

  • Lien vers le commentaire Propolis jeudi, 27 octobre 2016 08:00 Posté par Propolis

    Bonjour, merci pour votre article j'ai des sites d'origine iranien (.ir) qui me dérangent alors j'ai cherché dans google et j'ai tombé sur votre solution mais vous avez cité l'exemple de 2 sites web mais je veux connaitre comment faire lorsque j'ai une longue liste de site web.
    Est ce que je dois répéter [NC,OR] ou [NC] dans les lignes suivantes?
    Ou d'une autre façon comment sera la 3 éme ligne?
    Comme ça: RewriteCond %{HTTP_REFERER} www\.exemple2\.com [NC]
    Ou comme ça: RewriteCond %{HTTP_REFERER} exemple1\.com [NC,OR]
    prière de me répondre, merci.

Laissez un commentaire

Assurez-vous d'indiquer les informations obligatoires (*).
Le code HTML n'est pas autorisé.