Willi: Mal wieder ein Problem mit .htaccess (und/oder Safari)

Beitrag lesen

Hallo Leute,

Ich habe ein recht merkwürdiges Problem mit einer neuen Website.
Wie vermutlich viele andere leite ich in der htaccess alle Zugriffe (außer auf Dateien und Ordner, die real existieren) auf ein PHP-Script um, um dort die weitere Auswertung durchzuführen, welcher Inhalt denn angezeigt werden soll (per include).
Hört sich ja eigentlich alles recht einfach an, oder?

Das merkwürdige an der ganzen Sache ist aber, dass sich Safari weigert die Website anzuzeigen, Fehlermeldung:

Safari can’t open the page.
Too many redirects occurred trying to open “http://localsquires
/gastebuch”. This might occur if you open a page that is redirected to
open another page which then is redirected to open the original page.

(Ist noch die englische Beta, kommt aber entsprechend die gleiche Fehlermeldung auf einem Mac)

Das finde ich vor allem komisch, weil ja gar kein „echter“ Redirect stattfindet - es wird ja nur URI-abhängig verschiedene PHP-Dateien eingebunden. Das dürfte der Browser doch eigentlich gar nicht mitbekommen …

Damit das hier ein perfekter Anfangspost wird, darf natürlich auch nicht der Sourcecode fehlen (obwohl das nun wirklich nichts besonderes ist).
Nun denn - hier ist er:

.htaccess:

RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
  
RewriteRule ^.*$ /handle.php

handle.php (nur an einer Stelle gekürzt)

<?php  
 header('content-type: text/html; charset=utf-8');  
  
 if(preg_match('!([^\/]*)\/!',$_SERVER['REQUEST_URI'],$subpattern)) header("Location: ".$subpattern[1]);  
  
 $site = (strpos($_SERVER['REQUEST_URI'], '/', 1) !== false) ? substr($_SERVER['REQUEST_URI'], 1, strpos($_SERVER['REQUEST_URI'], '/', 1)-1) : substr($_SERVER['REQUEST_URI'], 1);  
 $site = (strpos($_SERVER['REQUEST_URI'], '?')) ? substr($site, 0, strpos($_SERVER['REQUEST_URI'], '?')-1) : $site;  
  
 switch($site){  
  
  case '':  
   $navi = 'home'; include 'index.php'; break;  
  
  case 'band':  
   $navi = 'band'; include 'band.php'; break;  
  
// many more stuff of that kind  
  
  default:  
   $code_ = 404;  
  include("error.php");  
 }  
?>

Wäre toll, wenn mir jemand bei der Lösung des Problems helfen könnte :-)

Liebe Grüße,
—Gabriel