Archiv verlassen und diese Seite im Standarddesign anzeigen : ModRewrite: Subdomain verwenden!
TriphunEM 02-02-2010, 08:57 Hallo,
aktuell ruft ein User seine Seite so auf:
http://example.com/username
ich will aber jetzt das der Nutzer Zugriff auf seine Seite über
http://username.example.com
hat.
Wie muss ich mein RewriteRule ändern, damit ich es via Subdomain machen kann?
Aktuell:
RewriteRule ^([a-z0-9-_]+)$ page.php?username=$1&content=home [NC,L]
Wichtig, die Lösungen die ich derzeit in Google gefunden habe, machen immer nur eine Weiterleitung, ich will aber das die URL im Browser stehen bleibt und keine erkennbare Weiterleitung entsteht.
Danke!
AmicaNoctis 02-02-2010, 09:14 Hallo,
damit das funktioniert, müsstest du erstmal alle Anfragen unabhängig von der Subdomain zu diesem Server routen. Ist das bereits der Fall?
Wenn du über Google nichts gefunden hast, hast du nicht richtig gesucht. Wildcard Catch-all Subdomains : mod_rewrite tutorial (http://www.easymodrewrite.com/example-subdomains)
Bitte URLs auf example.com umändern.
Gruß,
Amica
TriphunEM 02-02-2010, 09:57 Ja, hab ein catchall der subdomains auf mein hauptdomain....das funzt alles.
aber dein link bringt mir kein erfolg:
RewriteCond %{HTTP_HOST} !www.example.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).example.com [NC]
RewriteRule (.*) page.php?username=%2&content=home [L]
...geht nicht. ich lande immer wieder auf: http://example.com
AmicaNoctis 02-02-2010, 10:05 Wie funktioniert dieses Catch-All bei dir? Wenn der schon ohne mod_rewrite von einer Subdomain auf die Hauptdomain umleitet, kommt er ja gar nicht erst bis zum Rewriting. Probier's mal aus: entferne den Rewriting-Kram und ruf mal http://gibtesnicht.example.com/ auf. Was passiert dann in der Adresszeile des Browsers?
TriphunEM 02-02-2010, 10:26 wenn ich modrewrite raushaue, landet er sowie er soll mit der subdomain auf mein rootverzeichnis. und die subdomain bleibt im browser stehen! Das funktioniert also problem los. muss am rewriting liegen.
ich habs in den vhost files vom apache das catch all als server alias gemacht, so wie es sein soll.
noch eine idee?
AmicaNoctis 02-02-2010, 10:29 Wie sieht die komplette Datei aus? Ich nehme mal an, dass du es mit .htaccess machst? Vielleicht fehlt da noch was?
TriphunEM 02-02-2010, 10:30 idee: er landet mit
RewriteCond %{HTTP_HOST} !www.example.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).example.com [NC]
RewriteRule (.*) page.php?username=%2&content=home [L]
nicht in der page.php
ersetzte ich die page.php durch die index.php dann geht es.
die page.php soll aber eben nicht die index.php sein, die ist für was anderes vorgesehen. idee, was ich da noch ändern muss?
AmicaNoctis 02-02-2010, 10:33 Vermutlich musst du einfach nur den richtigen Pfad zur page.php angeben. Vielleicht macht es auch Sinn, mit RewriteBase zu arbeiten.
TriphunEM 02-02-2010, 10:37 Also wenn ich die komplette URL für die page.php schreibe, dann gehts erstmal...ABER nicht so wie ich will.
er macht dann einer weiterleitung auf:
http://example.com/page.php?username=username&content=home
das will ich nicht!!!
???
außerdem die page.php liegt im root genau wie die index.php
AmicaNoctis 02-02-2010, 10:43 Bitte poste deine aktuelle vollständige .htaccess
Mit Pfad meinte ich Pfad und nicht die komplette URL. Hast du es mal mit "/page.php" statt "page.php" probiert, wenn du kein RewriteBase gesetzt hast?.
TriphunEM 02-02-2010, 10:52 Ok!
/page.php das gleiche Ergebnis
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !www.example.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).example.com [NC]
RewriteRule (.*) page.php?username=%2&content=home [L]
</IfModule>
AmicaNoctis 02-02-2010, 10:53 Aber das example.com hast du in deiner Datei schon durch deine Domain ersetzt, oder?
Nimm mal das ".c" bei IfModule weg.
TriphunEM 02-02-2010, 10:54 Ja klar ;O)
Hier findest du einige gute Beispiele:
modrewrite.de | Apache mod_rewrite | Das Apache Modul mod_rewrite (http://www.modrewrite.de/mod_rewrite.apache.module.phtml)
TriphunEM 02-02-2010, 11:02 Die Seite kenn ich! Bitte nur konstrukutive Antworten...bissl kenn ich mich damit schon aus...denke ich zum. ^^
TriphunEM 02-02-2010, 11:12 Ach ich habs. ging doch so. ich check in page.php einige parameter ab, und wenn die fehlen gibts eine weiterleitung zu index.php ;O)
danke trotzdem
AmicaNoctis 02-02-2010, 11:26 :rolleyes:
Hmm,
also hier läuft das gewünschte mit folgender .htccess
RewriteCond %{HTTP_HOST} ^([\w\d-]+).? [NC]
RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
RewriteRule (.*) index.php?subdomain=%1 [QSA,L]
Hast du mal gecheckt ob sich page.php?username=test direkt aufrufen lässt?
//edit:
ja lol ;) - dann is alles gut
TriphunEM 02-02-2010, 13:30 Ok, da das jetzt funktioniert hab ich noch ein kleines Problem:
ich will jetzt "username.example.com/login.htm" aufrufen: login.htm soll dann auf um "...&content=login" verweisen. Wie muss das richtig aussehen?
RewriteCond %{HTTP_HOST} ^([^.]+)\.example.com
RewriteRule ^$ /page.php?username=%1&content=home [L]
RewriteRule ^%1/login.htm$ /page.php?username=%1&content=login [NC,L]
bzw. dynamisch:
RewriteRule ^%1/(.*).htm$ /page.php?username=%1&content=$1 [NC,L]
Danke
RewriteCond %{HTTP_HOST} ^([^.]+)\.example.com
RewriteRule ^(.+).htm$ /page.php?username=%1&content=$1 [NC,L]
(nicht getestet)
AmicaNoctis 02-02-2010, 13:43 RewriteCond %{HTTP_HOST} ^([^.]+)\.example.com
RewriteRule !^styles/ - [C]
RewriteRule !^scripts/ - [C]
RewriteRule !^images/ - [C]
RewriteRule ^(.*) /page.php?username=%1&path=$1 [L]
Das trichtert alle Requests nach page.php, sofern sie nicht in einen der Ordner laufen. In page.php kannst du dann $_GET["path"] auswerten.
|