• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

mod_rewrite - Problem mit nicht absolut eingebundenen Bildern oder auch Links

ChristianH

Jamba
Registriert
26.09.06
Beiträge
58
Vorab: ich bin ein mod_rewrite-Anfänger.

Folgendes-Problem:

URL:
http://beta.domain.de/nachrichten/1234/Das_ist_ein_Titel.html

soll weitergeleitet werden nach
/index.php?id=shownews&artnr=1234&titel=Das_ist_ein_Titel

Ich erreiche das erfolgreich durch:
Code:
RewriteRule ^nachrichten/(.*)/(.*)\.html/?$ /index.php?id=shownews&artnr=$1&titel=$2 [L]
Es hat jedoch einen Schönheitsfehler: es kommt vor, dass meine Quelltexte keine absoluten Links enthalten, wenn beispielsweise Bilder eingebunden werden.

Beispiel:
Code:
<img src="bilder/news/blabla.jpg" alt="XY />
Und nun habe ich den Salat: das Bild wird nun nicht unter http://beta.domain.de/bilder/news/blabla.jpg gesucht, sondern unter http://beta.domain.de/nachrichten/1234/bilder/news/blabla.jpg

Desgleichen bei Links, die nicht absolut gesetzt sind wie
Code:
<a href="galerie/">Klick</a>
. Verlinkt wird nun nicht mehr auf beta.domain.de/galerie/, sondern beta.domain.de/nachrichten/1234/galerie/

Auch das führt natürlich ins Leere.

Kann ich solche Dinge mit mod_rewrite in den Griff bekommen? Klar: beste und immer zu verwendende Lösung ist, KEINE nicht absolut definierten Links zu verwenden (ein / vor den dynamischen Links würde da ja schon reichen), aber ich würde gern auch diese unvorteilhaft definierten Verknüpfungen lauffähig erhalten, ohne elendig viele Daten ändern zu müssen (ohne / überall einzufügen).
 

zeno

Lane's Prinz Albert
Registriert
05.11.05
Beiträge
4.894
Die realtiven Links sollten auch garnicht von mod_rewrite berücksichtigt werden, da du ja deine RewriteRule mit ^nachrichten beginnst.. ich gugg später nochmal.. muss jetzt weg..
 

ma.buso

Châtaigne du Léman
Registriert
16.04.05
Beiträge
820
Die realtiven Links sollten auch garnicht von mod_rewrite berücksichtigt werden, da du ja deine RewriteRule mit ^nachrichten beginnst.. ich gugg später nochmal.. muss jetzt weg..

Das hat nichts mit mod_rewrite zu tun, das liegt am Browser, der denkt, in /nachrichten zu sein, und somit die relativen Pfade einfach dranhängt :)

@ ChristianH:

Erstelle eine weitere Regel, die alle URLs mit /nachrichten, die nicht deinen vorangegangen Regeln entsprechen, auf die URL ohne /nachrichten umleitet.
Soweit ich weiß, führt Apache die erste zutreffende Regel aus, sodass
Code:
RewriteRule ^nachrichten/(.*)$ /$1
oder so ähnlich reichen müsste.
Für jeden weiteren Ordner, den du dem Browser vorgaukelst ebenso.
 

creative7even

Jerseymac
Registriert
23.02.05
Beiträge
454
Das hat nichts mit mod_rewrite zu tun, das liegt am Browser, der denkt, in /nachrichten zu sein, und somit die relativen Pfade einfach dranhängt :)

@ ChristianH:

Erstelle eine weitere Regel, die alle URLs mit /nachrichten, die nicht deinen vorangegangen Regeln entsprechen, auf die URL ohne /nachrichten umleitet.
Soweit ich weiß, führt Apache die erste zutreffende Regel aus, sodass
Code:
RewriteRule ^nachrichten/(.*)$ /$1
oder so ähnlich reichen müsste.
Für jeden weiteren Ordner, den du dem Browser vorgaukelst ebenso.

oder definiere ganze einfach ein

Code:
<base href="http://mydomain.com/mywebsiteroot/" />
 

ChristianH

Jamba
Registriert
26.09.06
Beiträge
58
Herzlichen Dank Euch allen! :) Ihr habt mir sehr weiter geholfen.