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>