Configuration d'un RewriteRule à l'échelle du server dans conf-available

Dernièrement, j'ai reçu un spam de reference dans les journaux de mon site. Afin d'arrêter cela (car il est plutôt ennuyeux et polluant mes statistics), je veux bloquer les requests provenant de certains domaines de references. Beaucoup d'articles peuvent être trouvés qui recommandnt de mettre le suivant (ou quelque chose de similaire) dans le file .htaccess du site:

RewriteEngine On RewriteCond %{HTTP_REFERER} example\.com [NC] RewriteRule .* - [F] 

Cela fonctionne bien, mais je souhaite déplacer cela vers la configuration d'Apache, afin d'appliquer cette règle de réécriture à tous les sites hébergés sur le server. J'ai également lu que c'est mieux pour la performance, car le file .htaccess doit être analysé pour chaque requête, alors que la configuration Apache n'est chargée qu'une seule fois.

Mon server fonctionne sur Ubuntu, donc j'ai créé un nouveau file .conf: /etc/apache2/conf-available/block-referrer-spam.conf, avec le même contenu que l'extrait .htaccess d'en haut. J'ai créé un lien symbolique dans le directory conf-enabled (en utilisant sudo a2enmod block-referer-spam ) et a rechargé la configuration Apache ( sudo service apache2 reload ). Cependant, contrairement à l'utilisation de .htaccess, Apache ne bloque pas la request (renvoyez un 403).

Je pense que je pourrais être sur quelque chose de simple, donc toute aide est appréciée.

Les configurations de réécriture ne sont pas héritées par les hôtes virtuels. Pour "hériter" des directives dans les configurations vHost, chaque configuration de VHost nécessite:

 RewriteEngine on RewriteOptions Inherit 

Consultez la discussion Apache dans le module mod_rewrite à l'adresse suivante:

http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

Dans tous les cas, si vous avez access aux files site.conf pour chaque vHost, vous devriez probablement les utiliser pour les directives «site» et NE JAMAIS besoin d'activer les files .htaccess.

De plus, je suppose que vous avez "inclus" le conf-enabled / *. Conf dans votre file apache2.conf

Une astuce est de placer un file .htaccess au-dessus du directory où vos vHosts sont stockés.

Par exemple, si vos sites Web vHost sont dans /var/www/vhosts/.../ mettez un .htaccess -file à /var/www/vhosts/.htaccess . Parce que Apache lit .htaccess -files dans l'ordre du niveau du directory, il sera lu avant les files .htaccess -files.