2009-06-29 8 views
2

Ich versuche, eine Lösung mit .htaccess und Wildcard-Subdomains zu implementieren, so dass.htaccess Wildcard Subdomains

http://subdomain.example.com zu http://example.com/index.php/accounts/subdomain/ abgebildet wird. Meine Regeln in etwa so aussehen:

RewriteCond %{HTTP_HOST} !www.example.com [NC] 
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).example.com [NC] 
RewriteRule ^(.*/) /index.php [PT,L] 

Welche funktioniert, aber ignoriert alles andere. Wenn ich versuche, irgendetwas an die Regel anzuhängen, z. B .:

RewriteRule ^(.*/) /index.php/hello [PT,L] 

Ich bekomme einen 500 internen Serverfehler. Wie bekomme ich das zum Laufen?

Antwort

3

Sie müssen wahrscheinlich die index.php von Ihrer Regel auszuschließen:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.example\.com$ [NC] 
RewriteRule !^index\.php($|/) index.php/accounts/%2%{REQUEST_URI} [PT,L] 
+0

Danke, ich habe etwas anderes (-f und -d) benutzt, aber das funktioniert auch, also werde ich es für zukünftige Referenz ablegen. – Zahymaka

1

Versuchen Sie, Ihre RewriteRule zu

Ändern
RewriteRule ^/(.*)$ /index.php/accounts/%1/$1 [PT] 

, dass die URL wird man umschreiben, dass die Sub-Domain und die ursprüngliche Anforderung URI enthält.

EDIT: vielleicht braucht es

RewriteRule ^(.*)$ /index.php/accounts/%1/$1 [PT] 

wie in den Kommentaren erwähnt zu sein.

+0

Ich habe versucht, dies aber es scheint nicht einmal zu feuern, wenn ich index.php zu sonst etwas ändern. – Zahymaka

+0

Oh ... vielleicht müssen Sie das Muster^(. *) $ (Kein Schrägstrich) verwenden, wenn es in .htaccess ist. (Für das, was es wert ist, würde ich empfehlen, diese Direktiven in die Hauptserverkonfigurationsdatei zu schreiben, wenn Sie können.) –

+0

Siehe unten. Danke für die Hilfe! – Zahymaka

1

Dies ist eine Anpassung des Codes, den ich verwende, um Subdomains auf meiner eigenen Website umzuleiten. Ich behaupte nicht, dass es eine gute Praxis ist, aber es funktioniert.

RewriteCond %{HTTP_HOST} ^(.*)\.com$ [NC] 
RewriteCond %1 !^(www)\.example$ [NC] 
RewriteRule ^.*$ http://www.example.com/index.php/accounts/%1/ [R=301,L] 
+0

Das funktioniert, aber ich möchte nicht Benutzer auf der Website umleiten. Danke trotzdem. – Zahymaka

+0

Ich bin momentan nicht in der Lage, es zu testen, aber würde es nicht genauso funktionieren, wenn [R = 301, L] durch [PT, L] ersetzt wird? – Mathew

Verwandte Themen