PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : .htaccess mod_rewrite



heinzi123
14.08.03, 16:03
Tach zusammen,

also ich hab nun das Modul "mod_rewrite" installiert.

NameVirtualHost *

<VirtualHost *>
DocumentRoot /home/www/user/html
ServerName projektname.sonne
ServerAdmin root@server.sonne
# Der Teil für die ".htaccess" ?
<Directory /home/www/user/html>
Allow Override All
</Directory>
# .htaccess Ende ?
</VirtualHost>

So, jetzt habe ich ein Unterverzeichnis "/home/www/user/html/projekt_1" angelegt. Jetzt möchte ich gerne via ".htaccess" eine Umleitung eben zu diesem Pfad.

Was mich interessiert ist der Inhalt bzw. die Syntax
RewriteEngine on
RewriteRule ????????

Aber, sonst würde ich hier nicht Posten, bekomme ich es net gebacken ....

Für entsprechende Hilfe wäre ich seeeeehr dankbar.

Gruss
Jörg

thermoman
14.08.03, 21:43
Viel Spass beim Lesen:

http://www.engelschall.com/pw/apache/rewriteguide/

bzw.

http://www.modrewrite.com/

mfg,
thermoman

heinzi123
15.08.03, 07:38
Tach,
es ist immer erfreulich wenn mann eine gezielte Frage, als letztes Mittel in ein Forum stellt. Und dann als Antwort diverse Links bekommt. Als ob ich diese Links, nach drei Tagen "Google-Suche", net schon selbst gefunden hätte.

Eine feine Antwort wäre mal gewesen, zb. eine kleine Erklärung.
Oder ein Wink ....... versuche es mal so ...........

Aber das Motto diese Forum's scheint net ganz zu funktionieren !

Gruss

thermoman
15.08.03, 10:06
Sorry, aber deine Post enthielt keineswegs eine gezielte Frage.


Jetzt möchte ich gerne via ".htaccess" eine Umleitung eben zu diesem Pfad.

Sehr präzise Aussage. Von wo möchtest Du denn dahin umleiten?

Wenn Du die Dokumentation auf den Seiten gelesen hättest, die ich Dir gegeben habe, dann wüsstest Du auch, daß man mit mod_rewrite keine Verzeichnisse im Dateisystem umleitet, sondern URLs modifiziert.

Sorry, aber unter diesen Voraussetzungen sehe ich nicht ein, Dir hier ein fertiges Beispiel hinzuknallen. Lies die erwähnte Dokumentation, guck Dir die Beispiele an, versuche die Funktionsweise von mod_rewrite zu verstehen und wenn Du dann immer noch nicht weiter kommst, kannst Du gerne nochmal (mit einer etwas präziseren Frage) hier aufkreuzen. Dann gibt es sicherlich auch mehr Hilfe als wenn man einfach nur "Wie mach ich das?" brüllt.

mfg,
thermoman.

heinzi123
15.08.03, 17:57
Nun gut thermoman,

Im Moment muss ich gestehen das ich mit dem "mod_rewrite" gar nicht klar komme, bzw net versteh' !!!!!!!!
ich versuche so präzise wie möglich zu sein was die Ausgangsposition ist und was die Endposition sein soll.....

Also:

Ich nutzte bis dato einen ganz "gewöhnlichen" Apache 1.3.27 (LAMP). Der Apache ist so eingerichtet dass er auf einem Server (Host/Domain: "server.sonne") aufgesetzt ist. Die globale DocumentRoot ist
"/home/www"
In diesem DocumentRoot gibt es mehrere,für jedes projekt, Unterverzeichnise zb: /home/www/projekt_1, /home/www/projekt_2, usw

Jetzt habe ich mich etwas belesen und stellte fest das es sowas wie Virtuelle Host's gibt. Somit habe ich gleiche, für jeden Benutzer/Projekt eingerichtet.

Demzufolge habe ich auch für jedes Projekt einen Benutzer eingerichtet zb: usr_firma_1,usr_firma_2, usw
............
LoadModule rewrite_module libexec/mod_rewrite.so
.............
NameVirtualHost *
<VirtualHost *>
DocumentRoot /home/www/usr_firma_1/html
ServerName projekt_1.sonne
ServerAdmin root@server.sonne
<Directory /home/www/usr_firma_1/html>
Allow Override All
</Directory>
</VirtualHost>
<VirtualHost *>
DocumentRoot /home/www/usr_firma_2/html
ServerName projekt_2.sonne
ServerAdmin root@server.sonne
<Directory /home/www/usr_firma_2/html>
Allow Override All
</Directory>
</VirtualHost>
...........

Wenn ich jetzt mit dem Client (Browser) entsprechenden Host, natürlich via DNS, anspreche funktioniert WUNDERBAR !!!!!!!!!

Um was es jetzt eigentlich geht ist:

für jeden VirtualHost ist ja eine DocumentRoot eingetragen wie zb: "/home/www/usr_firma_1/html". OK???
Wenn ich jetzt am Client - Browser die Adresse: "http://projekt_1.sonne" klappt das wie schon erwähnt Wunderbar.
Wenn ich aber jetzt ein Unterverzeichnis anlege zb: "test" müsste ich ja am Browser "http:///projekt_1.sonne/test" eingeben. Korrekt ?
Was ich aber NICHT möchte, ich möchte dass die Adresse immer "http://projekt_1.sonne" ist. Demzufolge muss ja die DocumentRoot jetzt "/home/www/usr_firma_1/html/test" sein. Und genau dieses soll bzw kann ja die ".htaccess" tun, die mit einem PHP - Script erstellt wird (Das Script ist kein Problem, nur der Inhalt der .htaccess)

Wie sage ich dem "Apachen" das sich die DocumentRoot geändert hat ????????

Bitte jetzt nicht den Vorschlag es doch in der "httpd.conf" zu tun. Sonst müsste ich ja für jede Änderung der DocumentRoot den "Apachen" rebooten, dass soll ja gerade deshalb mit der ".htacces" gemacht werden.

Gruss
Jörg

thermoman
16.08.03, 03:59
Sorry,

ich verstehe nicht was Du machen willst. Wenn von Domain A das Document_Root /A ist und Du auf die Adresse http://A/test zugreifen willst, dann wird im Dateisystem nach /A/test gesucht.


Wenn ich aber jetzt ein Unterverzeichnis anlege zb: "test" müsste ich ja am Browser "http:///projekt_1.sonne/test" eingeben. Korrekt ?
Was ich aber NICHT möchte, ich möchte dass die Adresse immer "http://projekt_1.sonne" ist. Demzufolge muss ja die DocumentRoot jetzt "/home/www/usr_firma_1/html/test" sein

Ich verstehe den Sinn nicht. Du könntest ohne Probleme mit mod_rewrite Requests der Form http://projekt_1.sonne/* nach http://projekt_1.sonne/test/* umwandelt, aber ist es das was Du willst?

Verstehe ich das richtig, daß bei

Eingabe von http://projekt_1.sonne/dokument.html

Dokument http://projekt_1.sonne/test/dokument.html

zurückgegeben werden soll?

thermoman,
etwas verwirrt.

heinzi123
16.08.03, 09:41
Tach,

für jedes Projekt gibt es einen Virtuellen Host demzufolge hat jeder Virtuelle Host eine eigene "DocumentRoot", diese DocumentRoot lautet ursprünglich "/home/www/usr_firma_1/html" explizit natürlich für jeden weiteren Virtuellen Host.
Wenn ich ich jetzt am Browser "http://projekt_1.sonne" eingebe wird ja die DocumentRoot "/home/www/usr_firma_1/html" angesprochen und die entsprechende "index.html oder inex.php" am Browser ausgegeben.
Jetzt habe ich aber ein Unterverzeichnis "/home/www/usr_firma_1/html/test" demzufolge müsste ich jetzt am Browser folgende Adresse eingeben "http://projekt_1.sonne/test" das funktioniert ja auch. Das ist ja gar nicht mein Problem.
Mein Problem ist es dem Apache zu sagen "MOMENT" die DocumentRoot von jeben der Adresse "http://projekt_1.sonne" hat sich geändert !!!!!!!!!!!!!!!!!!!!!!

Der User der am Browser sitzt gibt doch immer "http://projekt_1.sonne" und nicht "http://projekt_1.sonne/test" ein der kennt doch gar nicht den Ordner "test"

Somit muss es doch möglich sein eine "interne" Umleitung von "http://projekt_1.sonne" nach "http://projekt_1.sonne/test". So das der User automatisch auf die neue interne Adresse "http://projekt_1.sonne/test" umgeleitet wird.

Also ausführlicher kann ich nimmer schreiben !

Gruss

thermoman
16.08.03, 14:41
Das ist ohne weiteres möglich. Aber erklär mir bitte noch eins:

1. Ist dieses Verzeichnis test immer gleich oder kann es auch mal test1 oder test2 etc sein?

2. Wenn es fest ist, warum änderst Du das Document_Root nicht in der httpd.conf?

3. Soll das ganze so funktionieren, daß bei Eingabe von http://projekt_1.sonne/ der Inhalt von /home/www/usr_firma_1/html ausgegeben wird, wenn das Verzeichnis test nicht vorhanden ist und soll, wenn das Verzeichnis test vorhanden ist, dann der Inhalt von /home/www/usr_firma_1/html/test ausgegeben werden?

Danach könnte man dann was passendes mit mod_rewrite basteln.

mfg,
thermoman,
der den Sinn des ganzen immer noch nicht sieht.

heinzi123
16.08.03, 14:56
hallo thermoman,


1. Ist dieses Verzeichnis test immer gleich oder kann es auch mal test1 oder test2 etc sein?
Nein dass verzeichnis kann auch einen anderen namen haben "eumel, irgendwas, utzutz, ........"


2. Wenn es fest ist, warum änderst Du das Document_Root nicht in der httpd.conf?
Genau darum geht es ja, es soll ja in einer ".htaccess" verpackt sein sonst müsste ich ja alle zwei minuten den Apache rebooten !


3. Soll das ganze so funktionieren, daß bei Eingabe von http://projekt_1.sonne/ der Inhalt von /home/www/usr_firma_1/html ausgegeben wird, wenn das Verzeichnis test nicht vorhanden ist und soll, wenn das Verzeichnis test vorhanden ist, dann der Inhalt von /home/www/usr_firma_1/html/test ausgegeben werden?
Korrekt !

Gruss
Jörg

thermoman
16.08.03, 15:12
Original geschrieben von heinzi123
hallo thermoman,


Nein dass verzeichnis kann auch einen anderen namen haben "eumel, irgendwas, utzutz, ........"


Sorry, aber so geht das nicht. Das wirst Du mit mod_rewrite nicht hinkriegen. Wenn es ein beliebiges Verzeichnis sein kann, wird das nix.

Da ist es wohl einfacher, Du überdenkst nochmal ein Konzept. Denn so einen Wunsch habe ich noch nie gehört - wüsste auch echt nicht wieso.

Entweder Du gibst den Pfad korrekt in der URL an oder machst irgendwas mit DirectoryIndex.

mfg,
thermoman.

PS: Vielleicht könntest mal genauer erklären, warum Du die Sachen, die Du in das 'test' Verzeichnis packst, nicht einfach direkt ins Document_Root legst, wenn doch sowieso jeder nur auf http://bla/ zugreift und nicht auf http://bla/test/