2017-05-17 3 views
1

J'ai WordPress MU installé sur le serveur et en utilisant certains Mod Deflate et Caching les fichiers et quelques autres modifications mineures dans le fichier .htaccess et quand je suis tombé sur des modifications pour les clients, j'ai remarqué que sur son serveur les images sont servies depuis mon serveur.Hotlink Protection ne fonctionne pas avec .htaccess

serveur Config: Plesk/CentOS - Hébergement Linux

Après une recherche complète j'ai essayé de placer tous les codes disponibles dans les articles StackOverflow et autres tutoriels et des sites, mais ne peut pas trouver ce que je fais mal, mais cela ne fonctionne pas .

.htaccess avec le regex hotlink et d'autres règles de réécriture

RewriteEngine On 
RewriteRule ^index\.php$ - [L] 

# uploaded files 
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L] 

# add a trailing slash to /wp-admin 
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L] 
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L] 
RewriteRule . index.php [L] 

<Files wp-config.php> 
     order allow,deny 
     deny from all 
</Files> 

<Files .htaccess> 
    order allow,deny 
    deny from all 
</Files> 

<Files xmlrpc.php> 
Order allow,deny 
Deny from all 
</Files> 

# Wordfence WAF 
<Files ".user.ini"> 
<IfModule mod_authz_core.c> 
    Require all denied 
</IfModule> 
<IfModule !mod_authz_core.c> 
    Order deny,allow 
    Deny from all 
</IfModule> 
</Files> 

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?domain.com [NC] 
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L] 

Si je vide mon .htaccess et juste garder le code suivant cela fonctionne.

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?domain.com [NC] 
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L] 

Qu'est-ce que je fais mal?

+1

Déplacer cette règle juste au-dessous la première ligne 'RewriteEngine On' et pour le faire fonctionner. – anubhava

+0

vous obtenez index.php avec la règle 7e – Deadooshka

+0

@anubhava Je vois son fonctionnement quand j'ai ajouté ces règles de la deuxième ligne et ça fonctionne bien. Serez-vous un peu élaboratif de ce qui pourrait être le cas? Dans une réponse séparée au lieu de commenter – Maqk

Répondre

1

Vous devez garder ce HTTP_REFERER supérieur à toutes les autres règles. Le problème est que vous avez une règle qui réécrit tous les URI à index.php. En raison de cette règle RewriteRule \.(jpg|jpeg|png|gif)$ échoue.

.htaccess complète:

RewriteEngine On 

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?domain.com [NC] 
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L] 

RewriteRule ^index\.php$ - [L] 

# uploaded files 
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L] 

# add a trailing slash to /wp-admin 
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L] 
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L] 
RewriteRule . index.php [L] 

<Files wp-config.php> 
     order allow,deny 
     deny from all 
</Files> 

<Files .htaccess> 
    order allow,deny 
    deny from all 
</Files> 

<Files xmlrpc.php> 
Order allow,deny 
Deny from all 
</Files> 

# Wordfence WAF 
<Files ".user.ini"> 
<IfModule mod_authz_core.c> 
    Require all denied 
</IfModule> 
<IfModule !mod_authz_core.c> 
    Order deny,allow 
    Deny from all 
</IfModule> 
</Files>