Sodia: mod_rewrite Manipulation

Guten morgen,

ich habe da eine frage, denn ich konnte leider nichts finden per google. ich weiß nicht ob ich das falsche eingegeben habe, dass ich es nicht finden konnte.

mod_rewrite kann ja URLs manipulieren.
Wenn ich nun etwa ein Inline oder Menülink habe wie <a href='./index.php?site=seite'> und in der adresszeile kommt dann url.tld/seite.html heraus, kann ich dann auch die Links so manipulieren, dass ich etwa <a href='./seite.html'> habe, er sich von der indexdatei die daten holt über z.B. ./index.php?site=seite und danach wieder in der adresszeile url.tld/seite.html steht?

Und das gleiche Beispiel eben, auch wenn ich einen fiktiven ordner angebe wie z.B. /ordner/seite.html

Wie muss ich da denken, was ist zu beachten? mod_rewrite ist sehr mächtig, aber schafft es auch sowas? Wie sähe ein Beispielcode aus?

vielen danke im voraus,
Sodia

  1. Hi,

    mod_rewrite kann ja URLs manipulieren.
    Wenn ich nun etwa ein Inline oder Menülink habe wie <a href='./index.php?site=seite'> und in der adresszeile kommt dann url.tld/seite.html heraus,

    Das täte es nur, wenn du nachdem die Anfrage beim Server eingegangen ist, einen Redirect machst.

    kann ich dann auch die Links so manipulieren, dass ich etwa <a href='./seite.html'> habe, er sich von der indexdatei die daten holt über z.B. ./index.php?site=seite und danach wieder in der adresszeile url.tld/seite.html steht?

    Nicht „danach“, sondern die ganze Zeit über.
    Das ist genau das, wofür man mod_rewrite normalerweise einsetzt, wenn man „schöne URLs“ haben will.

    Der Client fordert /seite.html an, wenn diese Anfrage beim Server ankommt wird sie intern auf /index.php?site=seite umgeschrieben.
    Der Client bekommt davon gar nichts mit.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi, danke Chris.

      Sieht es genauso mit Ordnern aus? Kann ich dann sagen wenn ich www/ordner/seite.html (href='/ordner/seite.html') eingebe, dass er dann in www/index.php die Seite wieder verändert, anstatt nach einer index.php in dem "ordner" zu suchen?

      ty
      Sodia

      1. Hi,

        Sieht es genauso mit Ordnern aus?

        Es gibt bei einem HTTP-Request keine „Ordner“ oder „Dateien“.
        Den Server erreicht einfach nur eine Anfrage, und was der dann daraus macht - bspw. auf sein Dateisystem mappen, oder mit Hilfe von mod_rewrite umschreiben – ist komplett ihm überlassen.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Es gibt bei einem HTTP-Request keine „Ordner“ oder „Dateien“.
          Den Server erreicht einfach nur eine Anfrage, und was der dann daraus macht - bspw. auf sein Dateisystem mappen, oder mit Hilfe von mod_rewrite umschreiben – ist komplett ihm überlassen.

          Also es ist somit möglich?
          Es handelt es sich dabei um den gleichen Code wie beim normalen umschreiben, nur dass ich eine zusätzliche anweisung machen muss, dass er im ordner bleiben soll.

          Sodia

          1. Hi,

            Es handelt es sich dabei um den gleichen Code wie beim normalen umschreiben, nur dass ich eine zusätzliche anweisung machen muss, dass er im ordner bleiben soll.

            Wer soll „im Ordner bleiben“ …?

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
            1. Niemand ^^

              Aber trotzdem danke für die antworten!!!

              1. Schreib einfach mal was du vorhast, ohne deine Sichtweise von mod_rewrite mit in deine Frage einzubauen. Die scheint nämlich noch nicht ganz zu stimmen, da versteht dann keiner was du genau meinst und was du haben willst.

  2. hi,

    Und das gleiche Beispiel eben, auch wenn ich einen fiktiven ordner angebe wie z.B. /ordner/seite.html

    Wie muss ich da denken, was ist zu beachten? mod_rewrite ist sehr mächtig, aber schafft es auch sowas? Wie sähe ein Beispielcode aus?

    Wenn Du eine Tabelle (1) hast, wo alle möglichen, also auf Deiner Site verfügbaren URLs hinterlegt sind, z.B.

    /
    /impressum.html
    /foo/index.html
    /bar/index.html
    /foo/bar/index.html

    ist der Code in der Serverkonfiguration ganz einfach, rewrite ruft bei jedem Request auf Ressourcen die mit .html enden, ein Script auf, welches ich gerne Reponse-Handler (RH) nenne. Dieser RH schaut in o.g. Tabelle und stellt fest, ob er dazu die Response ausliefern kann oder nicht.

    1. Diese Tabelle heißt bei mir Projektverwaltung. Da ist auch hinterlegt, ob ein URL Post- oder Getparameter haben darf, wer zum Request berechtigt ist, ob für die Response ein Template geladen wird u.v.a.m.

    Hotti