Seite 1 von 1

Problem mit mod_rewrite

Verfasst: 24.02.2010, 12:24
von lorenzolamas
Hallo,

ich habe mich in den letzten tagen viel mit mod-rewrite beschäftigt und durch die Suche, hier oder bei google, schon einige brauchbare Lösungen gefunden, die ich auch erfoglreich umsetzen konnte.

Doch hier hakt es:

RewriteBase /
RewriteRule artikel/news\.html$ index.php?page=856&ab=1

Hier kann ich den Artikel mit dem neuen Link

www.domain.de/artikel/news.html

erfolgreich aufrufen, doch wollen jetzt auch alle anderen Links auf dem Server den Ordner "artikel" mit aufrufen und das zerschießt die Seite

Wo ist der Fehler?

Ich hoffe, es kann mir jemand helfen....

Verfasst:
von

Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

Re: Problem mit mod_rewrite

Verfasst: 24.02.2010, 12:55
von Mork vom Ork
lorenzolamas hat geschrieben:RewriteRule artikel/news\.html$ index.php?page=856&ab=1

Hier kann ich den Artikel mit dem neuen Link

www.domain.de/artikel/news.html

erfolgreich aufrufen, doch wollen jetzt auch alle anderen Links auf dem Server den Ordner "artikel" mit aufrufen und das zerschießt die Seite

Wo ist der Fehler?
Mit mod_rewrite hat das nichts zu tun, das gehört in die Abteilung HTML. Relative URLs in einer Seite beziehen sich immer auf die Basis-URL, das ist die URL der Seite, die wiederum die betreffenden URLs enthält.

Die URL deiner Seite ist www.domain.de/artikel/news.html, für ein <img src="bild.png"> würde der Browser dementsprechend die Basis www.domain.de/artikel/ plus der relativen URL bild.png aufrufen: www.domain.de/artikel/bild.png.

Abhilfe: Korrigiere die URLs in deiner Seite. URLs relativ zum Wurzelverzeichnis, d.h. solche, die mit einem Schrägstrich beginnen, bieten sich an.

Verfasst: 24.02.2010, 13:19
von lorenzolamas
Sorry, aber dass versteh ich nicht so ganz. Ich dachte das man einen Ordner über mod_rewrite auch simulieren kann. Im dem Fall "artikel".

lass ich den "Ordner" artikel weg und mache es so:

RewriteRule news\.html$ index.php?page=856&ab=1

funktioniert es ja....

Verfasst:
von

Verfasst: 24.02.2010, 14:03
von net(t)worker
mod_rewrite ist nur die halbe miete... es wird nur beim Aufruf einer URL abgearbeitet... wenn jetzt die Links auf der Seite jetzt alle den Ordner /artikel/ mitaufrufen sind die Links auf der Site falsch, da diese alle in den Ordner Artikel verlinken...

wahrscheinlich ist es so wie MvO gesagt hat, das du alles relativ verlinkt hast, also z.B. so:

<a href="seite_a.html"> und wenn dieser dann auf der newsseite angezeigt wird, die ja in der Url den Ordner Artikel enthält, wird die seite_a.html ebenauch in dem Ordner Artikel gesucht... ebenso Bilder etc die nur relativ angegeben wurden...

wenn du mit mod_rewrite arbeitest solltest du immer mit absoluten Links arbeiten, also z.B. <a href="/seite_a.html"> dann ist egal in welchem Ordner die Seite liegt auf der dieser Link erscheint, die seite_a wird immer im stammverzeichnis gesucht...

Verfasst: 24.02.2010, 15:07
von lorenzolamas
Danke für die Antworten.

Im Klartext heißt dass nun , dass ichmein script so auslegen muss, dass es nicht "index.php?wasauchimmer" heißt, sondern /index.php?wasauchimmer"

Verfasst: 24.02.2010, 15:11
von net(t)worker
lorenzolamas hat geschrieben:Danke für die Antworten.

Im Klartext heißt dass nun , dass ichmein script so auslegen muss, dass es nicht "index.php?wasauchimmer" heißt, sondern /index.php?wasauchimmer"
jein...

wenn die URLs nicht umgeschrieben werden sollen isses so richtig...

wenn sie umgeschrieben werden sollen, muss dein script natürlich die neuen URLs verlinken...

aber immer ein / am Anfang stimmt schon.... wenn du auch immer direkt mit der domain verlinkst, also z.B. <a href="https://domain.tld/seite_a.html">, machst du es dummen contentdieben etwas schwerer, da diese dann ja die Links auch so mitübernehmen würden... ;-)

Verfasst: 24.02.2010, 15:51
von lorenzolamas
Also wenn ich es so mache

RewriteRule artikel/news\.html$ https://www.domain.de/index.php?page=856&ab=1

kann ich diesen Link www.domain.de/artikel/news.html korrekt aufrufen. Allerdinsg wird im Browser der alte Link www.domain.de/index.php?page=856&ab=1 ausgegeben

Verfasst: 24.02.2010, 15:55
von net(t)worker
dann stimmt da etwas nicht....

Verfasst: 24.02.2010, 16:47
von Mork vom Ork
lorenzolamas hat geschrieben:Sorry, aber dass versteh ich nicht so ganz. Ich dachte das man einen Ordner über mod_rewrite auch simulieren kann.
Der Browser weiß nichts von mod_rewrite, mod_rewrite ist eine rein serverinterne Angelegenheit. Der Browser sieht nur den HTML-Code, die URL des Codes (mit dem simulierten Ordner) und die URLs, die im Code drinstecken (und sich auf den simulierten Ordner beziehen), und damit arbeitet er wie beschrieben.
Allerdinsg wird im Browser der alte Link www.domain.de/index.php?page=856&ab=1 ausgegeben
Wo, in der Adressleiste? Woher "wissen" denn &#8222;alle anderen Links auf dem Server [, dass sie] den Ordner "artikel" mit aufrufen&#8220; sollen, wenn der Ordner im Browser gar nicht erscheint? Oder stehen im HTML-Code lauter artikel/-Verweise, die da nicht hingehören?

Nenne doch mal bitte die tatsächliche URL und was du alles in deiner .htaccess stehen hast. Im Moment passt deine Beschreibung hinten und vorne nicht.

Verfasst: 24.02.2010, 20:14
von lorenzolamas
Ich versuchs mal. Der eigentliche linkt wird so aufgerufen

index.php?page=856&ab=1 (dynamisch)

Ich möchte ihn aber in www.domain.de/artikel/news.html rewriten.

RewriteEngine on
RewriteRule artikel/news\.html$ index.php?page=856&ab=1

Der Befehl in .htaccess hat alle anderen Links dazu aufgefordert den ordner "artikel" zu wollen, den es ja eigentlich nicht gibt und damit die Seite zerschossen.

Nun hatte ich es so probiert

RewriteEngine on
RewriteRule artikel/news\.html$ https://www.domain.de/index.php?page=856&ab=1

ruf ich jetzt www.domain.de/artikel/news.html auf wird die Seite korrekt angezeigt im Browser (Adressleiste) aber nach wie vor der "alte" link ausgebeben, sprich: https://www.domain.de/index.php?page=856&ab=1

Verfasst: 24.02.2010, 20:26
von net(t)worker
wie gesagt... mod_rewrite ist nur die halbe Miete... biegt nur beim Aufruf um... bei der Ausgabe, also im Quelltext, musst du die Links anders ändern, das macht mod_rewrite nicht...

Verfasst: 26.02.2010, 12:19
von Ralle NL
Moin moin,
irgendwie versteh ich dich nicht,willst Du nur die eine Seite so ausgeben lassen oder alle ?

denn für Alle sollte es doch so aussehen

RewriteRule ^([0-9]*)-([0-9]*)- index.php?article_id=$1&clang=$2&%{QUERY_STRING}
RewriteRule ^([0-9]*)- index.php?article_id=$1&%{QUERY_STRING}

oder lieg ich da jetzt Gedanklich falsch