2017-08-31 16 views
1

J'utilise le code suivant dans mon fichier httpd.conf pour bloquer les robots collecteurs et visiteurs indésirables (par exemple frapper pages wp-login non existants):Vous voulez dossier vide pour revenir 404 au lieu de 403

SetEnvIf User-Agent BadBot GoAway=1 
Order allow,deny 
Allow from all 
Deny from env=GoAway 

Cela donnera eux une erreur 403 Forbidden. Sur ma page 403 personnalisée, j'enregistre les adresses IP dans une base de données pour les bloquer/les empêcher d'utiliser des formulaires de contact.

Ceci fonctionne très bien. Cependant, j'ai remarqué que certains utilisateurs sont bloqués parce qu'ils ont visité un dossier vide. Ceci est indésirable.

L'utilisation de Options -Indexes J'ai empêché l'affichage du répertoire, mais cela affichera également une erreur 403 Forbidden.

Question: Comment afficher et afficher une erreur 404 lors de la visite d'un dossier vide au lieu d'un 403?

Répondre

1

Puisque vous semblent avoir accès à httpd.conf alors vous pouvez faire quelque chose comme ce qui suit dans une configuration de serveur ou d'un contexte VirtualHost:

RewriteEngine On 
RewriteCond %{LA-U:REQUEST_FILENAME} -d 
RewriteRule /. - [R=404] 

Alternativement, près du haut de votre fichier .htaccess (depuis que vous avez balisé votre question .htaccess), sont les suivants (ce sera aussi travailler dans un répertoire contexte):

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule . - [R=404] 

le but du Le motif /. (ou .) est d'empêcher qu'un 404 soit servi pour la racine du document. Selon l'endroit où vous définissez votre personnaliséErrorDocument, vous pouvez obtenir une réponse 404 différente pour chaque méthode.


Alternativement, dans votre commande 403, effectuer la même vérification pour le « malbot » et seulement enregistrer l'entrée s'il y a un match. Ou, consignez uniquement l'entrée lorsque la demande ne correspond pas à un répertoire.