heinetz: relativer Pfad in rewrite_rule ?

Hallo Forum,

ich habe mir irgendwann meinen Anspruch, Websites so aufzusetzen,
dass sie unter http://www.domain.org genauso funktionieren, wie
unter http://www.domain.org/folder/ oder http://www.domain.org/folder/subfolder/ und das Projekt, dass später unter http://www.domain.org/ auf meinem Testserver unter http://domain.org.testserver.dev/ entwickelt, damit ich nicht auf absolute Pfade verzichen musste. Nun denn, so brauchte ich auf meinem Testsystem einen Nameserver, weil ich wollte, dass andere Clients im Netzwerk auf meine Testdomians gucken können sollten.
... soviel zum Hintergrund. Jetzt will ich jedefalls meine Webprojekte dahin umbauen, dass sie unter http://testserver.dev/domain.org/ laufen. Das sind bisher nur ein paar Handgriffe, aber
an einem Punkt komme ich nicht weiter:

Die Seiten laufen generell unter /_content/?site_id=<site_id>.
Die URL sind allerings /bereich/thema/beitrag und werden per
mod_rewrite in einer .htaccess so umgeleitet:

RewriteRule ^([^_]).+/$ /_content/index.php?%{QUERY_STRING}

Ich habe keine Idee, wie ich die so umbauen, dass sie unter
http://testserver.dev/domain.org/ genauso funktioniert, wie
unter http://domain.org.testserver.dev/.

ICh freue mich über Tipps

beste gruesse,
heinetz

  1. Hallo,

    Ich bin mir nicht ganz sicher ob ich das richtig verstehe, aber

    RewriteRule ^([^_]).+/$ /_content/index.php?%{QUERY_STRING}

    in

    RewriteRule ^([^_]).+/$ /domain.org/_content/index.php?%{QUERY_STRING}

    sollte
    modrewrite dazu bewegen die request
    http://testserver.dev/bereich/thema/beitrag
    passend umzuschreiben ... oder willst du
    http://testserver.dev/domain.org/bereich/thema/beitrag

    auflösen ?!

    bitte kurze antwort

    --------------

    IT & PR - Fenebris.com
    janfeddersen _at_ dunkelnetz _dot_ de
    Kredite, Umschuldung, Finanzen

    1. Hallo,

      folgende Requests zeigen auf den selben Inhalt:

      a) http://domain.org.testserver.dev/_content/index.php
      UND
      b) http://testserver.dev/domain.org/_content/index.php

      1. Der Aufruf von:
      ------------------
      http://http://domain.org.testserver.dev/bereich/thema/beitrag

      ... wird durch:

      RewriteRule ^([^_]).+/$ /_content/index.php?%{QUERY_STRING}

      ... nach a umgeschrieben. Das ist korrekt so.

      2. Der Aufruf von:
      ------------------
      http://http://testserver.dev/domain.org/bereich/thema/beitrag

      ... wird durch:

      RewriteRule ^([^_]).+/$ /_content/index.php?%{QUERY_STRING}

      ... aber nicht nach b umgeschrieben.

      Wie ich die RewriteRule so umschreibe, dass sie für das 2. Beispiel passt, ist klar. Dann passt sie aber nicht mehr
      für a.

      Nun frage ich mich, ob es einen Weg gibt, dass das Umscheiben
      in beiden Fälle passt, ohne die .htaccess anpassen zu müssen.

      beste grüsse,
      heinetz

      1. hmmm ... die .htaccess muss so oder so angepasst werden da für ihn in dem falle ja die / als parameter trennzeichen gelten genauso wie unterverzeichnisse ...

        http://testserver.dev/domain.org/bereich/thema/beitrag

        /domain.org/bereich/thema/beitrag <--- ist in dem falle der Paramter string und woher die rewrite url jetzt wissen soll das /domain.org/ oder gegebenenfals noch andere tiefere unterordner ORDNER und nicht Parameter sein sollen ... ist leider nicht geklärt...

        was du machen könntest wäre ein eideutiges zeichen in der URL zu verstecken ... bsp.

        http://testserver.dev/domain.org_/bereich/thema/beitrag
        bzw
        http://domain.org.testserver.dev/_/bereich/thema/beitrag
        oder
        http://testserver.dev/domain.org/NochEinUnterordner_/bereich/thema/beitrag

        und anhand des _ die trennung von Ordnern zu Parametern vornehmen.

        alles andere verwirrt deine Rewrite URL

        mit meinem beispiel müsste das etwa so gehen:
        RewriteRule ^_([^_]).+/$ /_content/index.php?%{QUERY_STRING}

        1. was du machen könntest wäre ein eideutiges zeichen in der URL zu verstecken ... bsp.

          http://testserver.dev/domain.org_/bereich/thema/beitrag
          bzw
          http://domain.org.testserver.dev/_/bereich/thema/beitrag
          oder
          http://testserver.dev/domain.org/NochEinUnterordner_/bereich/thema/beitrag

          und anhand des _ die trennung von Ordnern zu Parametern vornehmen.

          alles andere verwirrt deine Rewrite URL

          mit meinem beispiel müsste das etwa so gehen:
          RewriteRule ^_([^_]).+/$ /_content/index.php?%{QUERY_STRING}

          Ich verstehe nicht, was das mit dem eindeutigen Zeichen
          verändern sollte. Das würde m.E. dafür sorgen, dass immernoch:

          der erste Request nach:
          http://testserver.dev/_content/index.php
          un der zweite nach:
          http://domain.org.testserver.dev/_content/index.php

          ... umgeleitet würde. Das Problem sind ja die unterschiedlichen
          DocRoots dieser Domains. Was man sicher machen könnte, wäre was
          mit RewriteCond zu basteln und je nach Host unterschiedliche
          Rules zu definieren.

          1. Hi,

            Das Problem sind ja die unterschiedlichen DocRoots dieser Domains. Was man sicher machen könnte, wäre was mit RewriteCond zu basteln und je nach Host unterschiedliche Rules zu definieren.

            Steigert die Performance aber nicht, im Gegenteil.
            Für'n Testsystem könnte man das schon mal machen - aber produktiv würde ich davn Abstand halten.

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
  2. Hi,

    mod_rewrite in einer .htaccess so umgeleitet:

    Hm. Du machst Dir Gedanken, ob 2 Rewrite-Rules mit Rewrite-Condition eine Performance-Bremse darstellen, benutzt aber die Performance-Bremse .htaccess *)?

    RewriteRule ^([^_]).+/$ /_content/index.php?%{QUERY_STRING}

    [QSA] existiert.

    Ich habe keine Idee, wie ich die so umbauen, dass sie unter
    http://testserver.dev/domain.org/ genauso funktioniert, wie
    unter http://domain.org.testserver.dev/.

    Warum willst Du das als _eine_ Regel haben? Was spricht gegen mehrere Regeln?

    *) hierfür muß der Apache bei _jedem_ Seitenzugriff im Filesystem gucken, ob im Verzeichnis der Ressource sowie in den übergeordneten Verzeichnissen bis rauf zur DocRoot eine .htaccess vorhanden ist und muß diese ggf. parsen.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind unverschämt, werden ignoriert. Das Forum existiert.