Session + rewrite

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

Session + rewrite

Beitragvon tikal » 22.02.2006 09:54

Hallo ich habe meine Seite zweisprachig mit Hilfe und Session programmiert, was auch klappte.
Nun möchte ich url mittels Rewrite umschreiben und habe ein Problem:
index.php:
Code: Alles auswählen
session_start();
if(!$_SESSION['language']) {
$_SESSION['language'] = "german";
}  elseif($_REQUEST['lang'] == "en") {
$_SESSION['language'] = "english";
} elseif($_REQUEST['lang'] == "de") {
$_SESSION['language'] = "german";
}
$root="http://web/Web1";
if((!$_SESSION['language']) OR ($_SESSION['language']=="german"))
{include ("Ordner_de/content.php");
 include ("Ordner_de/navigation.php");}
else { include ("Ordner_en/content.php");
include ("Ordner_en/navigation.php");}
?>

in content.php steht ein Link auf eine Seite_x und auf die Startseite der anderen Sprache
Code: Alles auswählen
<a href="'.$root.'/de/Seite_x.html">Seite_x</a>'; 
bzw.
<a href="'.$root.'/en/Seite_x.html">Seite_x</a>'; 

<a href="'.$root.'/de/">Deutsch</a>
bzw.
<a href="'.$root.'/en/">English</a>

in der Navigation stehen die anderen Menulinks
Code: Alles auswählen
foreach($menu as $key => $value)
   {if ($_GET['page']=="$key")     
       {echo' <li class="mainmenu"><a class="mainactive" href="'.$root.'/de/'.($key).'.html">'.($key).'</a>';}
    else
      {echo' <li class="mainmenu"><a class="mainpassiv" href="'.$root.'/de/'.($key).'.html">'.($key).'</a>';}}
      bzw.
         {if ($_GET['page']=="$key")     
       {echo' <li class="mainmenu"><a class="mainactive" href="'.$root.'/en/'.($key).'.html">'.($key).'</a>';}
    else
      {echo' <li class="mainmenu"><a class="mainpassiv" href="'.$root.'/en/'.($key).'.html">'.($key).'</a>';}}

htaccess lautet
Code: Alles auswählen
RewriteEngine on
RewriteRule ^(de|en)/$ index.php?lang=$1 [L]
RewriteRule ^(de|en)/(.*).html$ index.php?page=$2&lang=$1 [QSA,L]

Sowohl die Links in content.php auf eine Seite_x als auch auf die andere Index-Sprachseite klappen,
aber wenn man die Menulinks in der Navigation anklickt, ist de/en nicht da, und somit wird die Seite nicht gefunden.
Stimmen die Anweisungen in den Links nicht, oder die in der htaccess?
Danke für die Hilfe
tikal
.
.
 
Beiträge: 11
Registriert: 06.02.2006 16:55

Beitragvon Bob » 22.02.2006 19:14

htaccess lautet
Hat mit Quelltextproblemen nichts zu tun.

aber wenn man die Menulinks in der Navigation anklickt
Wie sieht denn der vom PHP-Script generierte HTML-Quelltext aus? Wenn dir deine foreach-Schleife da Sachen in den Quelltext schreibt, können diese beim client ja nicht plötzlich verschwunden sein :shock:

Grüße
Robert
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10


Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste