Heldentaufe: mod-rewrite problem

Hallo Ihr da draussen,
taste mich so langsam an mod_rewrite heran.
Klappt auch schon ganz gut, zumindest für meine Verhältnisse.

Jetzt habe ich aber ein Problem.
In meine Scripten gebe ich alle links relativ an.
Und zwar möchte ich, das die Leute per www.example.de/hierhin auf www.example.de?do=hierhin kommen. klappt auch wunderbar. allerdings habe ich das Problem, das wenn ich jetzt einen Link anklicke, der Browser natürlich versucht auf www.example.de/hierhin?do=irgendwas zu zugreifen, wobei mod_rewrite dann wieder auf die Seite www.example.de/hierhin leitet.
Kann mann das ganze umgehen ohne alles auf absolute Pfadangaben umzustellen???

meine Rewrite rule sieht so aus:
RewriteRule ^([a-zA-Z]+)$ index.php?do=$1

Gruß
Heldentaufe

  1. Hi,

    In meine Scripten gebe ich alle links relativ an.
    Und zwar möchte ich, das die Leute per www.example.de/hierhin auf www.example.de?do=hierhin kommen. klappt auch wunderbar. allerdings habe ich das Problem, das wenn ich jetzt einen Link anklicke, der Browser natürlich versucht auf www.example.de/hierhin?do=irgendwas zu zugreifen, wobei mod_rewrite dann wieder auf die Seite www.example.de/hierhin leitet.

    Wieso versucht der Browser darauf zuzugreifen?

    Wenn die Seite über /hierhin aufgerufen wurde, dann werden alle relativen Links natürlich mit dem Pfadbestandteil dieser Adresse kompletiert, und der lautet /

    Kann mann das ganze umgehen ohne alles auf absolute Pfadangaben umzustellen???

    Was umgehen? Mir ist nicht ganz klar, wo eigentlich dein Problem liegt.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
  2. Kann mann das ganze umgehen ohne alles auf absolute Pfadangaben umzustellen???

    meine Rewrite rule sieht so aus:
    RewriteRule ^([a-zA-Z]+)$ index.php?do=$1

    Du musst den HTTP_HOST wieder vorne dranhängen - dann bleibt deine ursprüngliche Domain erhalten.

    RewriteCond %{HTTP_HOST} ^(.+)$ [NC]
    RewriteRule ^([a-zA-Z]+)$ http://%1/?do=$1 [R=301,L]

    Natürlich, wie immer nicht getestet.

  3. hi,

    Kann mann das ganze umgehen ohne alles auf absolute Pfadangaben umzustellen???

    Nunja, Deine Links müssen schon so beschaffen sein, dass entweder die RewriteRule greift oder dass sie eben woanders hinzeigen, wo die Rule nicht greift, z.B. pure Scripts, die nicht die Endung .html haben. Daher verbessere Deine Rule mal dahingehend, dass die nicht bei _jeder_ Ressource greift, sonst beißt sich die Katze in den Schwanz und kriegt dabei nen Drehwurm.

    Beispielsweise auf .html beschränken:

    RewriteRule ^(.*).html$ /cgi-bin/view.cgi?/$1.html

    Hotte

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    1. hi,
      »» Kann mann das ganze umgehen ohne alles auf absolute Pfadangaben umzustellen???

      Nunja, Deine Links müssen schon so beschaffen sein, dass entweder die RewriteRule greift oder dass sie eben woanders hinzeigen, wo die Rule nicht greift, z.B. pure Scripts, die nicht die Endung .html haben. Daher verbessere Deine Rule mal dahingehend, dass die nicht bei _jeder_ Ressource greift, sonst beißt sich die Katze in den Schwanz und kriegt dabei nen Drehwurm.

      Beispielsweise auf .html beschränken:

      RewriteRule ^(.*).html$ /cgi-bin/view.cgi?/$1.html

      Danke Dir,
      habe es jetzt doch anders gelöst. Habe bisher(warum auch immer, sonst mache ich es anders) immer nur mit ?do=irgendwas referenziert, habe es jetzt einfach so gemacht index.php?do=irgendwas .
      Jetzt läuft es...

      Danke Euch