bigbalu
Goto Top

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

Content-ID: 164513

Url: https://administrator.de/forum/rewriterule-fuer-webserver-164513.html

Ausgedruckt am: 22.12.2024 um 21:12 Uhr

gresser
gresser 13.04.2011 um 16:05:55 Uhr
Goto Top
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.
J0j0
J0j0 13.04.2011 um 17:34:05 Uhr
Goto Top
Schau mal hier:

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
http://www.workingwith.me.uk/articles/scripting/mod_rewrite
Florian.Sauber
Florian.Sauber 13.04.2011 um 19:56:12 Uhr
Goto Top
Tag auch,

Zitat von @gresser:
Redirect /intra/principals /intra/groupdav.php/datei.php

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/
oder sauberer
Redirect /intra http://www.foo.com/intra/groupdav.php

VG Florian
BigBaLu
BigBaLu 14.04.2011 um 13:44:21 Uhr
Goto Top
Soweit war ich leider auch schon - das funktioniert eben nicht face-confused

principals gibt es als Ordner nicht... Wenn ich jetzt hinter dem / (https://www.foo.com/intra/principals) gehe, dann sollte er mich auf https://www.foo.com/intra/groupdav.php/principals weiterleiten... Und das geht so leider nicht face-confused
Florian.Sauber
Florian.Sauber 19.04.2011 um 01:24:17 Uhr
Goto Top
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.
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]
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
RewriteEngine On
RewriteRule !^groupdav.php - [C]
RewriteRule ^(.*) /intra/groupdav.php/$1 [L,R=301]
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