2017-05-17 2 views
1

Ich habe WordPress MU auf dem Server installiert und einige Mod Deflate und Caching die Dateien und einige andere kleinere Änderungen in der. Htaccess-Datei und wenn ich auf einige Änderungen für die Clients stieß, bemerkte ich dass auf seinem Server die Bilder von meinem Server geliefert werden.Hotlink Protection funktioniert nicht mit .htaccess

Server Config: Plesk/CentOS - Linux-Hosting

Nach einer vollständigen Forschung, die ich alle verfügbaren Codes in den Stackoverflow-Artikeln und anderen Tutorials und Websites versucht Platzierung aber nicht finden können, was falsch mache, aber es funktioniert nicht .

.htaccess mit dem hotlink regex und anderen Regeln für das Umschreiben

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] 

Wenn ich meine .htaccess leeren und halte nur den folgenden Code funktioniert.

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

Was mache ich falsch?

+1

verschieben diese Regel nur unter dem ersten 'RewriteEngine On' Linie und es funktioniert. – anubhava

+0

Sie erhalten index.php mit 7. Regel – Deadooshka

+0

@anubhava Ich sehe es funktioniert, wenn ich diese Regeln aus der 2. Zeile hinzugefügt und es funktioniert gut. Wirst du ein wenig differenzierter darüber sein, was der Fall sein könnte? In einer separaten Antwort statt in einem Kommentar – Maqk

Antwort

1

Sie müssen diese HTTP_REFERER über alle anderen Regeln halten. Problem ist, dass Sie eine Regel haben, die alle URIs in index.php umschreibt. Aufgrund dieser Regel schlägt RewriteRule \.(jpg|jpeg|png|gif)$ fehl.

komplette .htaccess:

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>