Unerwünschte Aufrufe blockieren oder umleiten

Das Weblication® Server-Monitoring gibt Ihnen Auskunft darüber, welche Aufrufe im Projekt stattfinden und bildet somit eine wichtige Grundlage, um z.B. unerwünschte Aufrufe zu blockieren oder umzuleiten.

Die BASE liefert Ihnen bereits im Standard eine Umsetzung, um unerwünschte Bots/Robots/Spider o.ä. zu blockieren.

Zusätzlich können Sie auch sehr individuell an globaler Stelle über die pre.php diverse Aufrufe blockieren oder umleiten, welche nicht erwünscht sind.

Beispiel 1: Nur pageId1 bis pageId9 zulassen, sonst umleiten

Beispiel: Auszug aus der pre.php

// nach Include der grid.php setzen
  
if(preg_match('/pageId\w\w+=/i'$_SERVER['QUERY_STRING'])){
    
wResponse::redirect($_SERVER['SCRIPT_NAME'], true);
  }

Beispiel 2: Bot blockieren, wenn falsche Parameter gesendet werden

Beispiel: Auszug aus der pre.php

// nach Include der grid.php setzen
  
if(wRequest::isProbablyBot()){
    
    
//Falls ein Bot falsche Parameter sendet
    
if(strpos($_SERVER['QUERY_STRING'], 'NaN') !== false){
      
header('HTTP/1.1 400 Bad Request');
      exit;
    } 
  }

Beispiel 3: Aufrufe von "ExampleBot" blockieren

Beispiel: Auszug aus der pre.php

// nach Include der grid.php setzen
  
if(strpos($_SERVER['HTTP_USER_AGENT'], 'ExampleBot') !== false){
    
header('HTTP/1.1 400 Bad Request');
    exit;
  }

Beispiel 4: Aufrufe bestimmter / alter Pfade blockieren oder umleiten

Beispiel: Auszug aus der pre.php

// nach Include der grid.php setzen
  
if(preg_match('/\/alter-pfad\//'$_SERVER['REQUEST_URI'])){
    
// wenn blockiert werden soll:
    
header('HTTP/1.1 403 Forbidden');
    
header('Status: 403 Forbidden');   
    exit;
    
// wenn z.B. auf Startseite umgeleitet werden soll:
    // wResponse::redirect('/IHR-PROJEKT/index.php', true);exit;
  
}

Beispiel 5: Diverse Aufrufe nur für diverse Bots blockieren

Beispiel: Auszug aus der pre.php

// nach Include der grid.php setzen
  
$queryCrazyBots preg_match('/bingbot|googlebot/i'$_SERVER['HTTP_USER_AGENT']) 
    && (
preg_match('/redirectresize/i'$_SERVER['QUERY_STRING']) 
    || 
preg_match('/firstletter/'$_SERVER['QUERY_STRING']) 
    || 
preg_match('/pageid\w\w+=/'$_SERVER['QUERY_STRING']) 
    || 
preg_match('/firstletter=.*firstletter=/i'$_SERVER['QUERY_STRING']) 
    || 
preg_match('/\?\&+/'$_SERVER['REQUEST_URI'])
    || 
preg_match('/\&(\w+)=.*\&\1=/''&'.$_SERVER['QUERY_STRING'], $matches))
    ;
  if(
$queryCrazyBots){
    
// wenn blockiert werden soll:
    
header('HTTP/1.1 403 Forbidden');
    
header('Status: 403 Forbidden');   
    exit;
    
// wenn z.B. auf Startseite umgeleitet werden soll:
    // wResponse::redirect('/IHR-PROJEKT/index.php', true);exit;
  
}

Aufrufe werden mit einem Statuscode 403 quittiert, wenn:

  • der User-Agent bingbot oder googlebot enthält
    und
    • redirectresize im Querystring enthalten ist
      (Groß-/Kleinschreibweise wird nicht beachtet)
    • firstletter im Querystring enthalten ist
      (Groß-/Kleinschreibweise wird beachtet)
    • pageidXXX im Querystring enthalten ist
      (XXX steht für alphanummerische Zeichen, Groß-/Kleinschreibweise wird beachtet)
      In Projekten wird pageId mit großem I verwendet, womit es pageid nicht gibt.
    • firstletter zweimal im Querystring enthalten ist
      (Groß-/Kleinschreibweise wird beachtet)
    • ?& in der aufgerufenen URL enthalten ist
      (Groß-/Kleinschreibweise wird nicht beachtet)
    • wenn ein URL-Parameter mehrmals im Querystring enthalten ist