2013-04-17 3 views
0

Я пытаюсь использовать этот следующий код только в том случае, если url содержит определенные страницы Wordpress. И либо пользовательский агент пуст, либо совпадает с (curl/perl/php и т. Д.). Однако он делает это, даже если REQUEST_URI не соответствует. Является ли поток утверждений неправильным?Mod rewrite multiple rewrite condtions

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} ^-?$ [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} (havij|libwwwperl|wget|python|nikto|curl|scan|java|winhttp|clshttp|loader) [NC] 
RewriteCond %{REQUEST_URI} !^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC] 
RewriteRule .* - [F,NS,L] 

Благодаря

ответ

0

У вас есть ! перед вашим %{REQUEST_URI} регулярного выражения. Это означает, что:

  1. Если пользователь агент -
  2. ИЛИ, если пользователь агент havij, Wget и т.д.
  3. И если запрос НЕ в.ч.-login.php, WP- администратор и т.д.

Вы должны удалить матч отрицание:

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} ^-?$ [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} (havij|libwwwperl|wget|python|nikto|curl|scan|java|winhttp|clshttp|loader) [NC] 
RewriteCond %{REQUEST_URI} ^/(wp-login.php|wp-admin/|wp-content/plugins/|wp-includes/).* [NC] 
RewriteRule .* - [F,NS,L]