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-Key: 164513

Url: https://administrator.de/contentid/164513

Printed on: April 26, 2024 at 12:04 o'clock

Member: gresser
gresser Apr 13, 2011 at 14:05:55 (UTC)
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.
Member: J0j0
J0j0 Apr 13, 2011 at 15:34:05 (UTC)
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
Member: Florian.Sauber
Florian.Sauber Apr 13, 2011 at 17:56:12 (UTC)
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
Member: BigBaLu
BigBaLu Apr 14, 2011 at 11:44:21 (UTC)
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
Member: Florian.Sauber
Florian.Sauber Apr 18, 2011 at 23:24:17 (UTC)
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