1 votes

Les règles de réécriture incluses ne correspondent pas

Avec Apache, j'essaie de mettre en place une règle de réécriture qui sera incluse dans plusieurs hôtes virtuels. En fait, ce fichier de règles est inclus dans 2 vhost.

Le premier serveur virtuel ne contient que cette règle de réécriture (et elle fonctionne) et agit comme un proxy inverse pour Nginx :

 RewriteEngine On
 Include /etc/apache2/bad-referers

L'autre contient un Wordpress avec le plugin W3 Total Cache avec sa conf Apache et le .htaccess par défaut de WP :

    RewriteEngine On

    RewriteCond %{HTTP_HOST} !^domain.tld$
    RewriteRule ^(.*) http://domain.tld/$1 [R=301,L,QSA]

    Include /etc/apache2/bad-referers
    Include /var/www/d/domain.tld/w3tc.conf

Les mauvais référents, dans ce cas, ne sont jamais appariés, alors que cette règle se termine par [F,L]. La réécriture du nom de domaine et les règles de W3 Total Cache fonctionnent bien. Je ne comprends vraiment pas.

L'ordre ou l'emplacement des directives Include a-t-il une importance ? Devrais-je placer le contenu de tous ces fichiers dans la directive vhost ? Ou dans la directive RewriteBase ?

Le serveur virtuel (presque complet) via /server-info :

Dans le dossier : /etc/apache2/sites-enabled/domain.tld

   1: <VirtualHost *:80>
   7:   <Directory /var/www/d/domain.tld/html/>
  14:     RewriteEngine On
  16:     RewriteCond %{HTTP_HOST} !^domain.tld$
  17:     RewriteRule ^(.*) http://domain.tld/$1 [R=301,L,QSA]

Dans le dossier : /etc/apache2/bad-referers

   2:     RewriteEngine on
   5:     RewriteCond %{HTTP_REFERER} 4webmasters\.org [NC,OR]
 104:     RewriteCond %{HTTP_REFERER} youporn-forum\.uni\.me [NC]
 105:     RewriteRule ^.* - [F,L]

Dans le dossier : /var/www/d/domain.tld/w3tc.conf

 191:     RewriteEngine On
 192:     RewriteBase /wp-content/cache/minify/
 193:     RewriteRule /w3tc_rewrite_test$ ../../plugins/w3-total-cache/pub/minify.php?w3tc_rewrite_test=1 [L]
 194:     RewriteCond %{HTTP:Accept-Encoding} gzip
 195:     RewriteRule .* - [E=APPEND_EXT:.gzip]
 196:     RewriteCond %{REQUEST_FILENAME}%{ENV:APPEND_EXT} -f
 197:     RewriteRule (.*) $1%{ENV:APPEND_EXT} [L]
 198:     RewriteRule ^(.+/[X]+\.css)$ ../../plugins/w3-total-cache/pub/minify.php?test_file=$1 [L]
 199:     RewriteRule ^(.+\.(css|js))$ ../../plugins/w3-total-cache/pub/minify.php?file=$1 [L]
 207:     RewriteEngine On
 208:     RewriteBase /
 209:     RewriteCond %{HTTP:Accept-Encoding} gzip
 210:     RewriteRule .* - [E=W3TC_ENC:_gzip]
 211:     RewriteCond %{REQUEST_METHOD} !=POST
 212:     RewriteCond %{QUERY_STRING} =""
 213:     RewriteCond %{HTTP_COOKIE} !(comment_author|wp\-postpass|w3tc_logged_out|wordpress_logged_in|wptouch_switch_toggle) [NC]
 214:     RewriteCond %{HTTP_USER_AGENT} !(W3\ Total\ Cache/0\.9\.3) [NC]
 215:     RewriteCond "%{DOCUMENT_ROOT}/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index.html%{ENV:W3TC_ENC}" -f
 216:     RewriteRule .* "/wp-content/cache/page_enhanced/%{HTTP_HOST}/%{REQUEST_URI}/_index.html%{ENV:W3TC_ENC}" [L]

In file: `/etc/apache2/sites-enabled/domain.tld`

    :   </Directory>
    : </VirtualHost>

1voto

lolallalol Points 29

Résolu en utilisant une autre méthode, SetEnvIf & access deny.

<IfModule mod_setenvif.c>
SetEnvIfNoCase Referer 4webmasters\.org spambot=yes
Order allow,deny
Allow from all
Deny from env=spambot
</IfModule>

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X