RewriteRule für Webserver
Ich möchte per .htaccess Datei eine RewriteRule erstellen. Leider klappt das bei mir nicht so wirklich...
Wenn ich folgendes eingebe:
https://testdomain.de/intra/principals
dann soll er mich auf folgendes umleiten bzw. es soll für folgendes stehen:
https://testdomain.de/intra/groupdav.php/principals
Wie kann ich das erreichen bzw. wie kann ich das so schreiben, ohne gleich das ganze Verzeichnis umzuschreiben.
Danke,
BaLu
Wenn ich folgendes eingebe:
https://testdomain.de/intra/principals
dann soll er mich auf folgendes umleiten bzw. es soll für folgendes stehen:
https://testdomain.de/intra/groupdav.php/principals
Wie kann ich das erreichen bzw. wie kann ich das so schreiben, ohne gleich das ganze Verzeichnis umzuschreiben.
Danke,
BaLu
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 164513
Url: https://administrator.de/forum/rewriterule-fuer-webserver-164513.html
Ausgedruckt am: 22.12.2024 um 21:12 Uhr
5 Kommentare
Neuester Kommentar
Redirect /eingabe /ziel
Dies einfach in der .htaccess Datei im root Verzeichnis eintragen.
Bei diesem Beispiel würde dann http://domain.de/eingabe auf die http://domain.de/ziel weitergeleitet. Bzw. da die Domain nicht angeben ist in den Ordner ziel.
In deinem Beispiel brauchst du dann halt folgende Regel
Redirect /intra/principals /intra/groupdav.php/datei.php
oder falls du die .htaccess Datei nicht im root ablegst halt ohne das intra.
Dies einfach in der .htaccess Datei im root Verzeichnis eintragen.
Bei diesem Beispiel würde dann http://domain.de/eingabe auf die http://domain.de/ziel weitergeleitet. Bzw. da die Domain nicht angeben ist in den Ordner ziel.
In deinem Beispiel brauchst du dann halt folgende Regel
Redirect /intra/principals /intra/groupdav.php/datei.php
oder falls du die .htaccess Datei nicht im root ablegst halt ohne das intra.
Schau mal hier:
http://www.workingwith.me.uk/articles/scripting/mod_rewrite
RewriteEngine on
RewriteRule ^alice.html$ bob.html
Upload this .htaccess file to the same directory as alice.html and bob.html, and reload Alice’s page. You should see Bob’s page being displayed, but Alice’s URL. If you still see Alice’s page being displayed, then check you’ve followed the instructions correctly (you may have to clear your cache). If things still aren’t working for you, then contact your technical support people and ask them to enable mod_rewrite and the FileInfo override in their httpd.conf file for you
Tag auch,
Wenn ich den TO richtig verstehe, soll ja ganz allgemein www.foo.com/intra/xyz/* nach www.foo.com/intra/groupday.php/xyz/* umgeleitet werden.
Also eher
oder sauberer
VG Florian
Wenn ich den TO richtig verstehe, soll ja ganz allgemein www.foo.com/intra/xyz/* nach www.foo.com/intra/groupday.php/xyz/* umgeleitet werden.
Also eher
Redirect /intra/ /intra/groupdav.php/
Redirect /intra http://www.foo.com/intra/groupdav.php
VG Florian
Moin Moin,
ich seh gerade: So kann es ja nicht gehen! Du willst ja in ein Unterverzeichnis weiterleiten. Das was ich oben geschrieben habe funktioniert nur auf ein/e andere/s Domain/Verzeichnis.
also bspw.
Wenn Du in ein Unterverzeichnis verweisen willst, wird es etwas "schwieriger", da man allzu gerne in eine (rekursive) Schleife gerät. In Deinem Fall dann eben
intra/intra/intra/intra/.../groupdav.
Ähnlich geht es, wenn Du über bspw.
einen Redirect in ein untergeordentes Verzeichnis veranlasst.
^/intra(.*) heiss dabei, dass $1 mit intraundalleswasdanachnochsogeschriebenwird ersetzt werden soll, also auch das intra in der Substitution /intra/groupusw...Also wieder eine Schleife
Abhilfe schafft da die Verkettung von 2 Regeln, bei der die erste abfragt, ob groupdav.php teil der URI ist und wenn nein, dann soll ersetzt werden.
Um das ganze etwas klarer zu gestalten legst Du am besten folgende .htaccess im Verzeichnis /intra an
gibst Du jetzt bspw. foo.com/intra/xyz ein, wird zuerst geprüft, ob dieser Sring den String groupdav.php enthält. Da dies vor der ersten Substitution noch nicht der Fall ist, wird alles, was dem foo.com/intra/ folgt (.*), also hier xyz, in $1 geschrieben. Somit hast Du nach der ersten Substitution also foo.com/intra/groupdav.php/xyz. Da ab diesem Zeitpunkt der String groupdav.php enthalten ist, ist die Abfrage "ist nicht(!)groupdav.php" IMMER falsch, die 2. RewriteRule wird nicht mehr ausgeführt und es kommt auch zu keiner Schleifenbildung.
Der Parameter L ist zur Sicherheit, um die Regel gegenüber anderen abzuschliessen, der Parameter R(=301) sorgt für einen (permanenten) Redirect. Wenn Du R=301 weglässt, würdest Du in der Adressleiste foo.com/intra/abc stehen sehen, während auf foo.com/intra/groupdav.php/abc zugegriffen wird.
Hoffe das hilft Dir. Garantieren kann ich nämlich nicht dafür, dass es funktioniert, da ich davon ausgehe, dass .../groupdav.php/123 ja ursprünglich für .../groupdav.php?foobar=123... steht und Du bereits RewriteRules nutzt, die sich so in die Queere kommen könnten...
VG Florian
ich seh gerade: So kann es ja nicht gehen! Du willst ja in ein Unterverzeichnis weiterleiten. Das was ich oben geschrieben habe funktioniert nur auf ein/e andere/s Domain/Verzeichnis.
also bspw.
Redirect /intra /etcetera/groupusw
oder
Redirect /intra http://extra.com/groudusw.
Wenn Du in ein Unterverzeichnis verweisen willst, wird es etwas "schwieriger", da man allzu gerne in eine (rekursive) Schleife gerät. In Deinem Fall dann eben
intra/intra/intra/intra/.../groupdav.
Ähnlich geht es, wenn Du über bspw.
RewriteEngine on
RewriteRule ^/intra(.*) /intra/groupdav$1 [R]
^/intra(.*) heiss dabei, dass $1 mit intraundalleswasdanachnochsogeschriebenwird ersetzt werden soll, also auch das intra in der Substitution /intra/groupusw...Also wieder eine Schleife
Abhilfe schafft da die Verkettung von 2 Regeln, bei der die erste abfragt, ob groupdav.php teil der URI ist und wenn nein, dann soll ersetzt werden.
Um das ganze etwas klarer zu gestalten legst Du am besten folgende .htaccess im Verzeichnis /intra an
RewriteEngine On
RewriteRule !^groupdav.php - [C]
RewriteRule ^(.*) /intra/groupdav.php/$1 [L,R=301]
Der Parameter L ist zur Sicherheit, um die Regel gegenüber anderen abzuschliessen, der Parameter R(=301) sorgt für einen (permanenten) Redirect. Wenn Du R=301 weglässt, würdest Du in der Adressleiste foo.com/intra/abc stehen sehen, während auf foo.com/intra/groupdav.php/abc zugegriffen wird.
Hoffe das hilft Dir. Garantieren kann ich nämlich nicht dafür, dass es funktioniert, da ich davon ausgehe, dass .../groupdav.php/123 ja ursprünglich für .../groupdav.php?foobar=123... steht und Du bereits RewriteRules nutzt, die sich so in die Queere kommen könnten...
VG Florian