forum@modrewrite.de
RegistrierenSuchenFAQMitgliederlisteBenutzergruppenLogin
Neue Antwort erstellen Seite 1 von 2
Gehe zu Seite 1, 2  Weiter
www in ordner, subdomain in ordner mit Variable, fallback
Autor Nachricht
Antworten mit Zitat
Beitrag www in ordner, subdomain in ordner mit Variable, fallback 
Hallo zusammen,
zunächst mal Respekt an die schlauen Köpfe hier, die durch das System durch blicken!
Mir ist das anscheind zu hoch.
Ich habe mal versucht ähnliche Problemstellungen zu finden und die auf meine Bedürfnisse anzupassen.
Aber ich bekomme es nicht hin.

Ich versuche mal zu verdeutlichen was mir vorschwebt:
Code:

meinedomain.de       -> www/index.php                   (Angezeigte URL= www.meinedomain.de)
www.meinedomain.de   -> www/index.php                   (Angezeigte URL= www.meinedomain.de)
klaus.meinedomain.de -> kunden/index.php?KD=klaus       (Angezeigte URL= klaus.meinedomain.de)

Wenn klaus in der DB nicht existiert leite ich ihn per php auf www um.

Dann noch eine verständnisfrage:
Wenn ich dann im weiteren verlauf so eine url habe : klaus.meinedomain.de?site=userdaten
wie würde das dann in der URL-Zeile aussehen.
(hmm obwohl das kann ich dann ja selber testen)

Wenn das so läuft, wow dann eröffnen sich mir völlig neue Möglichkeiten!
Schonmal danke!

Gruß
MueThoS
PS: Ist es schwer dann später das ganze auf https um zu stellen?

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Mehr eine Studie als schluesselfertige Loesung:

Code:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^gnympf.de
RewriteRule ^(.*)$ http://www.gnympf.de/$1  [R=301,L]
RewriteCond %{HTTP_HOST} ^www.gnympf.de
RewriteRule ^(.*)$ /www/index.php       [PT,L]
RewriteCond %{HTTP_HOST} ^klaus.gnympf.de
RewriteCond /kunden/index.php?KD=klaus  -U
RewriteRule ^(.*)$ /kunden/index.php?KD=klaus   [PT,S=1,L]
RewriteRule ^(.*)$ /www/index.php       [PT,L]


Wuerde eigentlich viel kuerzer gehen und es gibt wahrscheinlich noch mehr Kunden als Klaus.

Die richtigen Suchbegriffe bei Google waeren dazu
mod_rewrite+RewriteMap
mod_rewrite+mass+virtual+host

Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Antworten mit Zitat
Beitrag  
Erstmal danke!
Aha, wie ich schon sagte sieht gut aus aber ich verstehs nicht.

Klar, alle Subdomains ausser www sollen als Variable KD übergeben werden.
Soweit ich deine Ausarbeitung verstehe ist die hier nicht der Fall.

Bitte korregieren wenns nicht stimmt:
Code:
RewriteCond %{HTTP_HOST} ^gnympf.de
RewriteRule ^(.*)$ http://www.gnympf.de/$1  [R=301,L]

Leitet ohne sub auf die www um.

Code:
RewriteCond %{HTTP_HOST} ^www.gnympf.de
RewriteRule ^(.*)$ /www/index.php       [PT,L]

Leitet alles was auf www rein kommt um ins unterverzeichnis www/index.php


Code:
RewriteCond %{HTTP_HOST} ^klaus.gnympf.de
RewriteCond /kunden/index.php?KD=klaus  -U
RewriteRule ^(.*)$ /kunden/index.php?KD=klaus   [PT,S=1,L]
RewriteRule ^(.*)$ /www/index.php       [PT,L]

Macht statisch aus der sub klaus eine kd=klaus und leitet in das kundenverzeichnis.

Code:
RewriteRule ^(.*)$ /www/index.php       [PT,L]

Was macht dann die letzte Zeile noch?

Also der Kundenname müßte dünamisch umgewandelt werden.
Das ist genau so kompliziert wie dieses Dingen bei PHP mit dem preg_match! Das verstehe ich nämlich auch nicht.

EDIT: Ah, die letzte Zeile ist das Fallback?

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
MueThoS hat Folgendes geschrieben:
Erstmal danke!
Aha, wie ich schon sagte sieht gut aus aber ich verstehs nicht.

Klar, alle Subdomains ausser www sollen als Variable KD übergeben werden.
Soweit ich deine Ausarbeitung verstehe ist die hier nicht der Fall.

Code:
RewriteCond %{HTTP_HOST} ^klaus.gnympf.de
RewriteCond /kunden/index.php?KD=klaus  -U
RewriteRule ^(.*)$ /kunden/index.php?KD=klaus   [PT,S=1,L]
RewriteRule ^(.*)$ /www/index.php       [PT,L]

Macht statisch aus der sub klaus eine kd=klaus und leitet in das kundenverzeichnis.

Code:
RewriteRule ^(.*)$ /www/index.php       [PT,L]

Was macht dann die letzte Zeile noch?

Also der Kundenname müßte dünamisch umgewandelt werden.
Das ist genau so kompliziert wie dieses Dingen bei PHP mit dem preg_match! Das verstehe ich nämlich auch nicht.

EDIT: Ah, die letzte Zeile ist das Fallback?


Die letzte Zeile zeigt die Standard-Seite an, wenn die Bedingung vorher (Kundenseite vorhanden) nicht erfuellt ist.
Das Beispiel gilt tatsaechlich nur fuer den Kunden Klaus.
Allgemein gehalten muesste es dann so lauten:

Code:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www.)?gnympf.de [NC]
RewriteCond %{HTTP_HOST} ^(.+)gnympf.de [NC]
RewriteRule ^(.*)$ /kunden/index.php?KD=%1   [PT,S=1,L]


Keine Ahnung, was /kunden/index.php macht. Wenn alle Kunden in einer Datenbank stehen, wuerde man das wie gesagt mit einer RewriteMap machen.

[/code]

Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Antworten mit Zitat
Beitrag  
Ok zur Erklährung:
Kunde meldet sich auf der Seite www.meinedomain.de oder halt meinedomain.de an und bekommt eine eigene url.
z.B.: Kunde1.meinedomain.de
Hier bekommt Kunde1 die selbe Seite wie Kunde2 nur halt mit anderem Inhalt.
Deshalb läuft alles in die selbe index.php nur durch das KD=Kunde1 variiert der Inhalt der aus der Datenbank geholt wird.

Wenn du mir sagst RewriteMap ist dafür besser geeignet glaube ich dir das da ich mich, wie schon gesagt, nicht wirklich auskenne!
Ich habe sowieso noch Probleme den Server überhaupt dazu zu bewegen auf die entsprechende Subdomain zu reagieren.
Im moment geht halt nur meinedomain.de. Das www und das * bzw nur das * muß ich ihm noch bei bringen Very Happy

Wenn das soweit läuft mache ich die PHP-Sachen und die sind dan weniger das Problem.

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Achso, dann liefert /kunden/index.php so eine Art Template nach Kunden-ID aus? Dann muesste das letzte Beispiel genuegen. Die RewriteMap waere etwas, wenn man Kunden-IDs zum Beispiel auf Directories mappem moechte.

Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Antworten mit Zitat
Beitrag  
Ja genau das soll passieren.
Nur leider klappt es nicht. Habe natürlich auch selber weitere Versuche gestartet-
Aber es kommen meißt Fehler. Bin mir noch nicht ganz sicher was das alles heißt:
Code:

Entweder:
[Sun Feb 07 18:51:10 2010] [error] [client XXXXX] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/vhosts/XXX/httpdocs/index.pl
Oder:
[Sun Feb 07 18:52:31 2010] [error] [client XXXXX] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.


Bin am verzweifeln.

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
MueThoS hat Folgendes geschrieben:
Ja genau das soll passieren.
Nur leider klappt es nicht. Habe natürlich auch selber weitere Versuche gestartet-
Aber es kommen meißt Fehler. Bin mir noch nicht ganz sicher was das alles heißt:
Code:

Entweder:
[Sun Feb 07 18:51:10 2010] [error] [client XXXXX] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/vhosts/XXX/httpdocs/index.pl
Oder:
[Sun Feb 07 18:52:31 2010] [error] [client XXXXX] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.


Bin am verzweifeln.


Options FollowSymlinks muss in httpd.conf gesetzt sein, wenn im Dateisystem Symlinks vorhanden sind.

Beim zweiten Fehler gibt es ein Rewrite-Loop. Schickst Du nochmal besser Deine ganze rewrite-conf.

Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Antworten mit Zitat
Beitrag  
Richtig, das mit den Options-Gedöns habe ich sogar bei Google gefunden und habe versucht das einzubauen.
Ich habs in der htaccess versucht und habe es auch in der Config versucht.
Klappte leider nicht. Was aber mit sicherheit an mir liegt Very Happy

Die Config für das rewrite habe ich jetzt nicht hier auf der Arbeit.
Aber genau genommen habe ich alles schon ausprobiert.
Verschiedene variationen, oder auch mal nur einen Teil.
Ich hoffe das ich Heute Zeitig nach Hause kann um nochmal etwas rum zu Probieren.
Wie schon gesagt PHP geht eigentlich schon ganz gut aber diese Sache mit dem Server administrieren (vServer)
und dem htaccess ist noch nciht so mein Fall.
Aber ich gebe nicht auf Mad

Ich muss also hin bekommen das er nicht wegen der Options meggert.
Weil dann liegt es nur noch an dem rewrite, richtig?
Und das sollten wir dann hin bekommen, hoffe ich.

Gruß
MueThoS

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
So, zu Hause und bin am testen!
Also ich habe den Server dazu überredet das die Meldung mit dem Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies... nicht mehr kommt.
Aber er ist sonst mit nichts einverstanden.
Übrigens der google-test funktioniert.

Aber egal was ich ausprobiere es kommt immer diese Meldung: Request exceeded the limit of 10 internal redirects due to probabl.....
Und ich habe alles mögliche schon probiert. Deine Vorschläge von oben und auch eigenkreationen.

Jetzt Probiere ich nochmal den google-test etwas umzuschreiben. Es muß doch möglich sein wenigstens in einen anderen Ordner zu kommen.

Edit:
Mal eine Frage:
Die htaccess-Datei ist doch nur gültig wenn ich auf den Ordner surfe indem sie liegt oder?
weil enn ich folgendes mache:
Zitat:
RewriteEngine On
RewriteRule ^ http://meinedomain.de/www/ [R,L]

Das ist doch das mindeste was gehen sollte oder?
Und da sagt mir mein Browser :Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Dat gibbet doch garnicht!!!
Also ich habe es hin bekommen!
Bzw DU hast es hin bekommen.
Zitat:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^meinedomain.de
RewriteRule ^(.*)$ http://www.meinedomain.de/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.meinedomain.de
RewriteRule ^(.*)$ /www/index.php [PT,L]
RewriteCond %{HTTP_HOST} !^(www.)?meinedomain.de [NC]
RewriteCond %{HTTP_HOST} ^(.+)meinedomain.de [NC]
RewriteRule ^(.*)$ /kunden/index.php?KD=%1 [PT,S=1,L]

Das klappt genau wie ich es haben will.
Einziger schönheitsfehler: In der übergebenen Variable ist der Punkt mit drinne! Kann man den noch entfernen?
Wenn nicht mache ich das über PHP.

Zweite Frage:
Ich habe ja raus bekommen das natürlich die htaccess auch für die Unterordner gilt. Muß ja auch wenn man ne Zugangskontrolle damit realisiert.
Ich habe jetzt in den zwei Ordner jeweils eine htaccess mit nem RewriteEngine OFF ist das der richtige Weg?

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
MueThoS hat Folgendes geschrieben:
Dat gibbet doch garnicht!!!
Also ich habe es hin bekommen!
Bzw DU hast es hin bekommen.
Zitat:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^meinedomain.de
RewriteRule ^(.*)$ http://www.meinedomain.de/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.meinedomain.de
RewriteRule ^(.*)$ /www/index.php [PT,L]
RewriteCond %{HTTP_HOST} !^(www.)?meinedomain.de [NC]
RewriteCond %{HTTP_HOST} ^(.+)meinedomain.de [NC]
RewriteRule ^(.*)$ /kunden/index.php?KD=%1 [PT,S=1,L]

Das klappt genau wie ich es haben will.
Einziger schönheitsfehler: In der übergebenen Variable ist der Punkt mit drinne! Kann man den noch entfernen?
Wenn nicht mache ich das über PHP.

Zweite Frage:
Ich habe ja raus bekommen das natürlich die htaccess auch für die Unterordner gilt. Muß ja auch wenn man ne Zugangskontrolle damit realisiert.
Ich habe jetzt in den zwei Ordner jeweils eine htaccess mit nem RewriteEngine OFF ist das der richtige Weg?


Wie schoen, dass es jetzt klappt. Fuer die erste Frage muss die vorletzte Zeile so lauten:

Code:

RewriteCond %{HTTP_HOST} ^(.+).meinedomain.de [NC]


Mit den Unterordnern verstehe ich nicht. Mod_Rewrite schreibt Adressen um und nicht Unterordner Smile

Wenn Du nur den ersten Teil einer URL verarbeiten willst, dann darf die Rule nicht so gierig matchen:

Code:

RewriteRule ^/([^/]+)/([^/]+)$ /kunden/index.php?KD=$1&PT=$2   [PT,L]



Nur als Beispiel...

Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Antworten mit Zitat
Beitrag  
So,
weiter gehts (ist mir schon fast peinlich)
Also das mit dem Punkt hat auch wieder geklappt. Der ist jetzt weg.
Was ich meinte mit Unterordner ist folgendes;
Er hat mir ja immer gesagt das zu viele Weiterleitungen durchgeführt werden und der Server deshalb abbricht.
Mit der htaccess im Unterordner in der nur steht RewriteEngine OFF hat es dann geklappt.
Zumindest vorerst.
Ich habe mir jeweils in den zwei ordnern eine index.php gelegt um zu schauen ob ich am richtigen Ort ankomme.
Also www.meinedomain.de hat mich in den www ordner geleitet.
Und test.meinedomain.de hat mich in den Kundenordner geleitet und die Variable test stand zur Verfügung.

Letzteres geht auch immernoch.
Jetzt wollte ich aber eine joomla Neuinstallation in dem WWW ordner machen.
Und nu sagt er wieder das zu viele Umleitungen statt finden.
Egal ob die htaccess von mir oder die von Joomla oder auch keine drinne ist.

Wenn ich den Server hier stehen hätte würde ich jetzt gegen treten.
Zum glück komme ich da nicht ran!

Benutzer-Profile anzeigen Private Nachricht senden
Antworten mit Zitat
Beitrag  
Die RewriteRules oben unterstuetzen gar keine Unterordner. Entweder gibt es noch Rewrites in der httpd.conf oder .htaccess oder in der index.php wird mit HTTP-Headern (etwa "Location:") der Request umgeleitet.
Wenn Du

Code:

RewriteEngine off


schaltest, duerfte ja der ganze Spuk vorbei sein. Oder Du postest alle RewriteRules nochmal...

Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Antworten mit Zitat
Beitrag  
Och menno, das ist aber eine blöde Sache!

Mit den oben genannten Regeln klappt zwar erstmal alles soweit bis ich Joomla starten will.
Dann fängt er wieder von vorne an mit zu vielen weiterleitungen.
Jetzt habe ich diese Regel genommen:
RewriteRule ^(.*)$ /www/index.php [R=301,L]
Nun klappt es zwar aber ich habe den www-Ordner im Domainnamen.
Mache ich das mit [PT] klappt es nicht. Also die Weiterleitung schon aber dann kommt Joomla und dann gehts nicht mehr.

Ich weiß nicht ob dir nochwas einfällt ansonsten muß ich das www in der URL lassen!

Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:
Neue Antwort erstellen Seite 1 von 2
Gehe zu Seite 1, 2  Weiter
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.