Seite 1 von 1

Problem mit Script zur URI Zerlegung (Quellcode vorhanden)

Verfasst: 28.07.2006 13:19
von christiana83
Schalömchen,

ich hab jetzt sämtliche Foren durchforstet, um mein Problem zu lösen, aber ich komme nicht ganz zur Vollendung, da ich meines Erachtens einen Denkfehler hab oder den Wald vor lauter Bäumen nicht mehr sehe.
Ich probiere jetzt schon seit einer Woche und bin über jede Hilfe dankbar.

Also folgendes Problem. Ich habe 1 bis > 12 Parameter (6 Parameterpaare) zu übergeben. Mod_rewrite kann aber nur von $1 bis $9 übergeben. Aus diesem Grund habe ich meine htaccess umgeschrieben und ein passendes PHP Script formuliert, welches die URI zerlegt.

Das ganze hat nun auch super funktioniert...alle Parameter, auch bis $14 werden übergeben. Nur funktioniert jetzt die Übergabe eines einzigen Parameterpaares nicht mehr...also §1=$2 bringt mich zu einer Seite ohne Inhalt. Werden wieder mehr Parameter übergeben, so funktioniert das ganze wiederum...

zum Nachvollziehen:

PHP:

Code: Alles auswählen

$parts = explode('/', $_SERVER['REQUEST_URI']);
$num = count($parts);

for ($i=2; $i < $num ; $i++) {


   if($i < $num-1) {
      $key = $parts[$i];    // 'fuseaction'
      $value = $parts[$i+1]; // 'start'
      
      if(!empty($key) and !empty($value)) {
         $_GET[$key] = $value;
      }
   }
   
   $i++;
   
   
}




HTACCESS:


Code: Alles auswählen

Options +SymLinksIfOwnerMatch +FollowSymLinks

RewriteEngine On


RewriteRule ^(.+)/?.html$ index.php?request_uri=%{REQUEST_URI} [L]




Vielleicht sieht jemand erfahrenes den Fehler ja auf den ersten Blick...ich knobel jedenfalls schon die ganze Zeit und werde einfach nicht schlauer....
:?: :?:

Verfasst: 28.07.2006 14:22
von christiana83
PROBLEM GELÖST!!!!

Damit ich mich auch nicht gleich beim ersten Eintrag unbeliebt mache will ich auch die Lösung hin posten:

Code: Alles auswählen

$parts = explode('/', $_SERVER['REQUEST_URI']);
$num = count($parts);

for ($i=2; $i < $num ; $i++) {


   if($i < $num-1) {
      $key = $parts[$i];    // 'fuseaction'
      //$value = $parts[$i+1]; // 'start'
      
      $value = str_replace('.html','', $parts[$i+1]);
      
      if(!empty($key) and !empty($value)) {
         $_GET[$key] = $value;
      }
   }
   
   $i++;
   
   
}



...da ich an jeden Link ein ".html" angehangen habe, hat er das mit zurück gegeben und das war natürlich ein Fehler...also muss er das ".html" ignorieren...und str_replace ist die Lösung![/code]