Sabrina: htaccess - RewriteRules

Hallo liebes Forum,

mit

RewriteEngine on
RewriteCond %{REQUEST_URI} (.*).html$
RewriteRule (.*).html$ $1.php

hab ichs so gebastelt, dass meine php-Seiten auch mit *.html-Endung laufen.

Jetzt möchte ich noch folgendes dazu umsetzten ...

aus
http://meine-domain.de?irgendeinname/
soll
http://meine-domain.de/verzeichnis/irgendeinname/
werden.

Hab folgendes unter oben genannte Anweisung gesetzt:
RewriteCond %{REQUEST_URI} (.*)?(.*)/$
RewriteRule (.*)?(.*)/$ $1/verzeichnis/$2

Leider funktioniert das nicht.

Hab Ihr eine Idee?

Liebste Grüße,

Sabrina

  1. hi,

    mit

    RewriteEngine on
    RewriteCond %{REQUEST_URI} (.*).html$
    RewriteRule (.*).html$ $1.php

    hab ichs so gebastelt, dass meine php-Seiten auch mit *.html-Endung laufen.

    Dafür mod_rewrite herzunehmen, ist reichlich unsinnig.
    Das geht mit der AddType-Direktive viel einfacher und performanter.

    aus
    http://meine-domain.de?irgendeinname/
    soll
    http://meine-domain.de/verzeichnis/irgendeinname/
    werden.

    Hab folgendes unter oben genannte Anweisung gesetzt:
    RewriteCond %{REQUEST_URI} (.*)?(.*)/$
    RewriteRule (.*)?(.*)/$ $1/verzeichnis/$2

    Leider funktioniert das nicht.

    RewriteRules betrachten den Querystring ohne weiteres nicht.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi wahsaga,

      Das geht mit der AddType-Direktive viel einfacher und performanter.

      kannst Du mir das denn in Deiner besseren Variante mal posten?

      RewriteRules betrachten den Querystring ohne weiteres nicht.

      evtl. auch die Lösung für mein Problem?

      Bitte, das wäre wirklcih ganz lieb ...

      LG, Sabrina

      1. hi,

        Das geht mit der AddType-Direktive viel einfacher und performanter.

        kannst Du mir das denn in Deiner besseren Variante mal posten?

        Hast du dich über die genannte Direktive informiert?

        RewriteRules betrachten den Querystring ohne weiteres nicht.

        evtl. auch die Lösung für mein Problem?

        Lösung deines Problems: Wenn du den Querystring in deiner RewriteRule betrachten willst, dann betrachte den Querystring in deiner RewriteRule.

        Schau in der Doku zu mod_rewrite nach, auch welche Umgebungsvariablen du Zugriff hast und wie.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. RewriteEngine on
    RewriteCond %{REQUEST_URI} (.*).html$
    RewriteRule (.*).html$ $1.php

    Das ist unsinnig. Du prüfst erst mittels RewriteRule, ob die URL auf .html endet und prüfst anschließend nochmals mittels RewriteCond, ob die URL auf .html endet. Traust du RewriteRule nicht?

    Ein Muster mit .* zu beginnen ist weiterhin im Allgemeinen unnötig. Die Ausnahme ist dein RewriteRule-Fall, da du dort mit den runden Klammern etwas für die spätere Verwendung in $1 aufnehmen möchtest.

    Darüber hinaus ist mit dieser Konstruktion zumindest theoretisch jede Seite zweimal vorhanden, einmal unter der .php-URL, einmal unter der .html-URL, du kannst keine Dateien mehr ansprechen, die tatsächlich auf .html enden, und genau genommen frisst sie unnötigerweise auch noch Resourcen.
    In der PHP-Anleitung (Beispiel 4.4, Punkt 15) steht, wie du, sofern du einen Apache-Webserver benutzt, dein Vorhaben mit AddType sauberer angehst.

    Und last but not least ist der Vorteil, Seiten auf .html enden zu lassen, wenn überhaupt, dann rein kosmetischer Natur - nicht, dass du auf irgendwelches Geschwätz reinfällst, das dir bessere Suchmaschinenpositionierung verspricht.

    aus
    http://meine-domain.de?irgendeinname/
    soll
    http://meine-domain.de/verzeichnis/irgendeinname/
    werden.

    Hab folgendes unter oben genannte Anweisung gesetzt:
    RewriteCond %{REQUEST_URI} (.*)?(.*)/$
    RewriteRule (.*)?(.*)/$ $1/verzeichnis/$2

    Alles doppelt aufzuschreiben solltest du wirklich unterlassen.

    Hab Ihr eine Idee?

    Schau in die Bedienungsanleitung zu RewriteCond. RewriteRule verarbeitet nur den Pfad, keine Parameter.

  3. Hello out there!

    hab ichs so gebastelt, dass meine php-Seiten auch mit *.html-Endung laufen.

    Warum bastelst du es nicht so, dass alle deine Seite ohne Endung laufen? "content negotiation" und "MultiViews" sind deine Suchbegriffe. [https://forum.selfhtml.org/?t=156482&m=1017980]

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)