• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Es regnet, ist neblig und kalt, alle sind krank und der Chef wird zunehmend cholerisch. Das Thema des Monats ist also folgerichtig --> Das Grau(en)
    Wir sind gespannt, war Euch dazu einfällt! Zum Wettbewerb --> 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.