HILFE mein mod_rewrite funktioniert ...

RaverHH

Mitglied
... aber leider nicht richtig :-(

Vielleicht hat ja einer eine Lösung für mein Fehler:

Nur zu Testzwecken habe ich ein Testverzeichnis angelegt und zwei Dateien darin abgespeichert:

1. Datei -> link1.html soll nur auf auf die link2.html verlinken
PHP:
<html>
<head>
<title>Title here!</title>
</head>
<body>
<?php
echo $REQUEST_URI."<p>";
?>
<p>
statische Links
<p>
<a href="link2/open/messages.html">Link 2</a>
</body>
</html>

2. Datei -> link2.html soll zurück auf die link1.html verlinken
PHP:
<html>
<head>
<title>Title here!</title>
</head>
<body>
<?
echo $REQUEST_URI."<p>";
?>
<a href="link1/open/messages.html">Link 1</a>
</body>
</html>

Die .htaccess sieht folgendermassen aus:
Code:
AddType application/x-httpd-php .php .php4 .php3 .phtml .htm .html

RewriteEngine on
RewriteCond %{REQUEST_URI}/test ^/(.*)/(.*)/(.*)\.html$
RewriteRule ^/test/(.*)/(.*)/(.*)\.html$ /test/$1.html?$2=$3 [L]

Nach unzähligen suchen nach tut's und stundenlangen hin und her testen klappt dies endlich. Die link1.html geht auf die link2.html. Nur wenn ich zurück auf die link1.html möchte dann bleibt er auf der link2.html und gibt folgendes durch den REQUEST_URI aus:

/test/link2/open/link1/open/link1/open/messages.html

Das heisst, er ersetzt dass messages durch den neuen link an die link1.html; besser gesagt, er nimmt messages weg und fügt den link hinten ran.
Doch wie kann man es schaffen, daß er auf die link1.html verlinkt?
 
Zuletzt bearbeitet:
Probiers mal so:
Code:
AddType application/x-httpd-php .html

RewriteEngine on
RewriteBase /test
RewriteRule ^.*([^/]+)/([^/]+)/([^/]+)\.html$ /test/$1.html?$2=$3 [L]

Auf diese Art erhältst du jedoch immer längere URLs in den Links(und der Browser-Adresszeile)...da durch nicht redirectest ([R]).
Da wäre es empfehlenswerter, wenn du die Links a'la
Code:
<a href="/test/link2/open/messages.html">
schreibst.
 
Zuletzt bearbeitet:
leider auch nicht

in der Adresszeile steht

/link1/open/messages.html
und es kommt ein 404 Fehler, da er jetzt das /test weg lässt
 
Sorry, war eben mein fehler.

funktioniert jetzt. Muss jetzt nur nochmal der Sache auf den Grund gehen wieso weshalb warum. Denn ich hatte auch schon mit L , R , S oder P probiert.
 
Nur wie kann ich es jetzt eigentlich auslesen? mit GET funktioniert es irgendwie nicht.

PHP:
if(isset($_GET['open'])){
     $dat=$_GET['open'];
     echo $dat;
}

gibt irgendwie nix aus ?
 
Zurück