RewriteRule macht Probleme

Alles, was den Apache betrifft, kann hier besprochen werden.

RewriteRule macht Probleme

Postby RaverHH » 12. September 2004 14:58

Hallo,

mein RewriteRule macht was es will und nicht was ich will. Warum?

Folgendes:
Auf www.domain.de befindet sich ein Unterverzeichnis /test darin enthalten 4 Dateien test1.html, test2.html, .htaccess und bild.jpg

Link in der test1.html sieht so aus: <a href="test2/home.html">Link1</a>
Bild: <img src="bild.jpg">

Links in der test2.html sehen so aus: <a href="test1.html">Link1</a>
und <a href="test1/neu.html">Link2</a>
Bild wie in test1.html

.htaccess:
Code: Select all
RewriteEngine on
RewriteBase /test
RewriteRule ^.*([^/]+)/([^/]+)\.html$ test/$1.html?open=$2 [R,L]

Wenn ich die test1.html aufrufe ist alles ok. Rufe ich den Link darin auf, werde ich korrekt auf die test2.html weitergeleitet und erhalte den Parameter.

Nur das Bild wird nicht angezeigt, da hier auch die URL geändert wird. www.domain.de/test/link2/bild.jpg

Warum wird die URL des Bildes geändert?
RaverHH
 
Posts: 5
Joined: 12. September 2004 14:35

Postby Wiedmann » 12. September 2004 15:54

Warum wird die URL des Bildes geändert?

Gute Frage... (evtl hast du das [R] doch nicht drin?) -->
Wenn ich die test1.html aufrufe ist alles ok. Rufe ich den Link darin auf, werde ich korrekt auf die test2.html weitergeleitet und erhalte den Parameter.

..., da ich schon diese Aussage nicht bestätigen kann (konntest natürlich auch mal den Browsercache leeren).

Probiers mal damit:
Code: Select all
RewriteRule ^(.*)/(.*)\.html$    $1.html?open=$2    [R,L]
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby RaverHH » 12. September 2004 16:06

Der Browser Cache wird automatisch beim schließen des Browsers geleert. Habe auch Deine Rule eben probiert, doch keine Änderung.

Die Rule funktioniert ja eigentlich auch, da er den Parameter ja richtig umsetzt und auf die entsprechende Seite geht.

Nur darf er nicht die URL des Bildes ändern und das macht er. Ich habe auch schon mit anderen Flags und ohne Flags probiert.
RaverHH
 
Posts: 5
Joined: 12. September 2004 14:35

Postby Wiedmann » 12. September 2004 16:21

Die Rule funktioniert ja eigentlich auch, da er den Parameter ja richtig umsetzt und auf die entsprechende Seite geht.

Dann hast du uns etwas wichtiges unterschlagen. Dein Beispiel aus deinem 1. Post erzeugt bei mir nur "Redirection Limit for this URL exeeded" wenn ich auf den Link in "test1.html" klicke. Ergo wird "test2.html" gar nicht geladen, gewschweige irgendein Parameter umgesetzt.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby RaverHH » 12. September 2004 16:30

Hier mal der komplette Inhalt der beiden Dateien:
link1.html
Code: Select all
<html>
<head>
<title>Title here!</title>
</head>
<body>
<?php
echo $REQUEST_URI."<p>";
?>
<p>
Nur open:<br>
<a href="/test/link2/messages.html">Link 2</a>
<p>
<img src="bild.jpg" width="50px">
</body>
</html>


link2.html
Code: Select all
<html>
<head>
<title>Title here!</title>
</head>
<body>
<?
error_reporting(E_ALL);
echo $REQUEST_URI."<p>";
$uri=$REQUEST_URI;
$new=spliti("[.]",$uri);
print_r($new);
echo"<br>";
echo "<p>";
$new1=spliti("[/]",$new[0]);
print_r($new1);
echo "<p>";
echo $new1[3]."<br>";
echo "<br>";
?>
mit Parameter:<br>
<a href="/test/link1/home.html">Link 1</a><p>
ohne Parameter:<br>
<a href="/test/link1.html">Link 1</a><p>
<p>
<img src="bild.jpg" width="50px">
</body>
</html>


Beide Dateien befinden sich im Verzeichnis www.domain.de/test

sowie das bild.jpg und die .htaccess[/code]
RaverHH
 
Posts: 5
Joined: 12. September 2004 14:35

Postby Wiedmann » 12. September 2004 16:58

Hmm, ist das Absicht das du PHP-Code in einer HTML Datei unterbringst?

Ist zwar jetzt etwas anders als vorher, bei mir aber das selbe Ergebnis...
(Hast du in "/htdocs/" auch noch eine ".htaccess" mit RewriteRules oder in der "httpd.conf"?)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby RaverHH » 12. September 2004 17:10

Das kann ich nicht sagen, weil es auf meinem webspace ist und nicht auf meinem lokalen server. Lokal hab ich mod_rewrite noch nicht zum laufen bekommen (wegen w2k).

wenn ich nur links verwende funktioniert es ja.

Hab auch mal das Bild direkt zugewiesen: www.domain.de/test/bild.jpg

Damit funktioniert es, doch das ist keine Lösung, weil ich die Links auf meiner eigentlichen Webseite dynamisch erzeugt werden.

Dort meldet sich ein ähnliches Phänomen. URLs von Links werden korrekt umgesetzt bis auf, daß er in allen URLs immer etwas hinein kopiert.
RaverHH
 
Posts: 5
Joined: 12. September 2004 14:35

Postby Wiedmann » 12. September 2004 17:18

Dann kann ich dir dann wohl nicht helfen. Bei mir funktioniert deine Methode überhaupt nicht, dafür meine...

Das kann ich nicht sagen, weil es auf meinem webspace ist und nicht auf meinem lokalen server.

Dann funktioniert bei dir PHP-Code in HTML-Dateien? Scheint ja ein interessant konfigurierter Webserver zu sein...

Lokal hab ich mod_rewrite noch nicht zum laufen bekommen (wegen w2k).

Wo ist da der Zusammenhang zwischen "mod_rewrite" und "W2K"?

Damit funktioniert es, doch das ist keine Lösung, weil ich die Links auf meiner eigentlichen Webseite dynamisch erzeugt werden.

Auch bei dynamischen Links könntest du ja eine komplette URI mit Servernamen schreiben lassen, wenn nur das bei dir geht.

Dort meldet sich ein ähnliches Phänomen. URLs von Links werden korrekt umgesetzt bis auf, daß er in allen URLs immer etwas hinein kopiert.

Und was ist "etwas"?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby RaverHH » 12. September 2004 17:32

Es sind eigentlich PHP Dateien nur das ich den Parser mitteile, daß er Dateien mit htm und html Endungen wie php Dateien behandeln soll
Code: Select all
AddType application/x-httpd-php .php .php4 .php3 .phtml .htm .html


Das Problem bei der eigentlichen Webseite ist folgendes:
Verzeichnisstruktur:
www.domain.de/new -> hier ist die gesamte Seite drin
-> /system -> hier sind Unterverzeichnisse zu den inc, func und Script Dateien
-> /index -> Startverzeichnis
-> /user -> Userverzeichnis
-> /images -> Bilder Verzeichnis

rufe ich die /index/index.html Datei auf ist alles ok und URLs sehen auch ok aus

Benutze ich einen Link Bsp.: index/home.html verbleibt er auf der index.html und fügt in allen URLs ein /index ein auch in den URLs zu Bildern und Scripten usw.

Pfadangabe zum Bild (Quelltext): <img src="../images/bild.jpg">
durch mod_rewrite www.domain.de/new/index/images/bild.jpg

Obwohl in der RewriteRule nur ...html$ steht.

Füge ich einen direkten Pfad zu den Scripten o.ä. ein gibts Fehlermeldungen
RaverHH
 
Posts: 5
Joined: 12. September 2004 14:35


Return to Apache

Who is online

Users browsing this forum: No registered users and 4 guests