relativer Pfad in rewrite_rule ?
heinetz
- php
0 Jan Feddersen0 heinetz
0 MudGuard
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
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
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
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}
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/beitragund 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.
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
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