2017-10-26 1 views
0

ich eine Wordpress-Website, und ich versuche, bestimmte Useragents, um herauszufiltern, basierend auf Teile ihrer Zeichenfolge Namen.htaccess RewriteCond OR Flagge nicht wie erwartet funktioniert

Ich verwende diese:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteCond %[HTTP_USER_AGENT] .*useragent3.* [NC, OR] 
RewriteCond %[HTTP_USER_AGENT] .*useragent2.* [NC, OR] 
RewriteCond %[HTTP_USER_AGENT] .*useragent1.* [NC] 
RewriteRule ^.* - [F,L] 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

Doing Also, ich bekomme einen 500 Fehler und ich habe bemerkt, dass, wenn ich die OR Flagge entferne ich den 500 Fehler los und die Website zeigt sich, aber es filtert nicht die Userages. Dies ist normales Verhalten, da das Flag OR die OR-Anweisung zu meiner RewriteCond-Abfrage hinzufügt, da der Standardwert AND wäre und der useragent-Name zur Übereinstimmung mit allen diesen Zeichenfolgen erforderlich wäre.

Die Frage bleibt, warum bekomme ich einen 500 Fehler bei der Verwendung von OR?

Antwort

1

die Leerzeichen in Ihren Fahnen entfernen

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteCond %[HTTP_USER_AGENT] .*useragent3.* [NC,OR] 
RewriteCond %[HTTP_USER_AGENT] .*useragent2.* [NC,OR] 
RewriteCond %[HTTP_USER_AGENT] .*useragent1.* [NC] 
RewriteRule ^.* - [F,L] 

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

+0

Dies geht auf die Arbeit sollte „Wie 1 Stunde verlieren, weil von einem Leerzeichen“ -Reihe. Vielen Dank! –

+0

Fügen Sie eine weitere Stunde hinzu, um zu erkennen, dass ich {} anstelle von [] .. doh verwenden soll –

Verwandte Themen