Apache RewriteRule ignorant RewriteCond?

J'ai donc un Apache en cours d'exécution sur OSX Server 10.4 (ne request pas) avec plusieurs sites. Dans 0002_[example.com].conf , j'ai ce code:

 <Directory "/Library/WebServer/Documents/secret/"> RewriteEngine On RewriteCond %{REMOTE_ADDR} !^137\.250\. RewriteRule .* /messages/secret.html </Directory> 

Cependant, dans cette configuration, le RewriteCond semble toujours être évalué comme faux, puisque l'annuaire secret s'affiche même si l'adresse du client ne commence pas avec 137.250.

Si je change la configuration à cette

 <Directory "/Library/WebServer/Documents/secret/"> RewriteEngine On RewriteRule .* /messages/secret.html RewriteCond %{REMOTE_ADDR} !^137\.250\. </Directory> 

la condition soit ne pas être évaluée du tout, soit toujours évaluée comme étant vraie. Quoi qu'il en soit, tous les clients sont bloqués.

Qu'est-ce que je fais mal?

Cependant, dans cette configuration, le RewriteCond semble toujours être évalué comme faux, puisque l'annuaire secret s'affiche même si l'adresse du client ne commence pas avec 137.250.

Bien sûr, parce que c'est ce que vous avez exprimé avec votre RewriteCond ! Si vous souhaitez uniquement des clients dont les adresses IP commencent par 137.250. Pour voir la page secret.html vous devez supprimer la négation ( ! ) dans votre RewriteCond .

Le deuxième extrait que vous avez posté est insortingnsèquement incorrect. RewriteCond doit précéder le RewriteRule il se réfère.

Il serait plus facile si vous utilisez Allow , Deny et un object personnalisé 403 ErrorDocument (voir Contrôle d'access ). Lorsque vous utilisez le marteau mod_rewrite, tout problème commence à ressembler à un clou …;)