[PHP] Subdomainweiche / Subdomain per Script

Hallo zusammen,

heute habe ich mal etwas spezielles für euch. Sicher ist die Methode etwas veraltet, aber dennoch für den ein oder anderen von nutzen.

Es geht, wie schon der Titel sagt, um Subdomains. Jeder kennt das sicher, man hat eine Domain – wie z.B. „www.meineseite.de“ – und möchte dort z.B. ein Forum installieren. Um damit aber nicht die Hauptdomain zu belasten möchte man es auf einer Subdomain einrichten – z.b. „forum.meineseite.de“. Es gibt für Subdomains noch viel mehr Verwendungsmöglichkeiten… aber ich denke jeder weiß was ich meine.

Heutzutage gibts wohl in den meisten Webspaceangeboten zig echte Subdomains dazu und man hat keinen Bedarf an meiner Lösung. Aber falls doch mal jemand noch einen uralt Webspace haben sollte der diese Möglichkeit nicht gegeben bekommt… es gibt vielleicht eine Lösung :)

Ich persönlich habe diese Weiche entwickelt für ein Projekt bei dem jeder User eine eigene Subdomain bekommt. Und da es viele werden sollen wäre das eine heiden Arbeit für jeden User ins System zu gehen und per Hand eine Subdomain anzulegen… also habe ich mir eine kleine Schummelei ausgedacht (die es vielleicht schon oft gibt, dazu habe ich mal nicht gegoogled und selbst gebastelt ;) )

Also, dann starten wir mal. Das Problem hatten wir schon kurz… ich möchte Subdomains anlegen ohne jedes mal per Hand ins System zu müssen. Wenn User „xyz“ seine Subdomain „xyz.meineseite.de“ aufruft dann soll er die Inhalte seiner Subdomain sehen und nicht meine Hauptseite.
Und so tricksen wir ein bisschen…

<?php
Erst einmal PHP-Tag öffnen… aber normalerweise wird diese Weiche in eine Script eingebaut und er ist Überflüssig.
if ($_SERVER[„SERVER_NAME“] != „localhost“) {
Dann eine Abfrage ob lokal gearbeitet wird. Lokal können wir keine Subdomains aufrufen da wir ja nicht „www.meineseite.de“ aufrufen sondern einen lokalen Pfad… also darf die Weiche da nicht aktiv sein.
$SubDom = „.meineseite.de“;
$Subdomain = str_replace($SubDom, „“, $_SERVER[„SERVER_NAME“]);
$Subdomain = trim(strtolower($Subdomain));

So, das ist sie eigentlich. Was wird da gemacht. Erst einmal übergeben wir unseren Domainnamen an die Variable „$SubDom“. Natürlich ohne „www“ aber mit dem ersten „.“. In der zweiten Zeile ersetzen wir dann einfach unser „.meineseite.de“ in der Servervariable „SERVER_NAME“ mit nichts. ;) In der Servervariable steht immer die aufgerufene URL… z.B. „xyz.meineseite.de“.
Als Beispiel: Der User ruft die URL „xyz.meineseite.de“ auf. Diese steht nun in der Variable „SERVER_NAME“ und wir ersetzen in dieser Variable unsere $SubDom-Variable mit nichts. Das heißt: „xyz.meineseite.de“ – „.meineseite.de“ = „xyz“… In der Variable „$Subdomain“ steht nun also unsere Subdomain. Wir wissen wo der User hin will… und damit können wir jetzt arbeiten.

Man könnte jetzt in einer Datenbank (in der man Userdaten und evtl. zugehörigen Subdomainnamen gespeichert hat) nachschauen ob es die Subdomain überhaupt gibt. Man könnte den User jetzt irgendwohin umleiten, ihm eine andere Seite anzeigen (seine Subdomainseite natürlich) oder oder oder…

Wichtig ist auf jeden fall das der Server alle(!!) Anfragen auf eine Domain umleitet… sonst funktioniert das nicht. Ruft man „xyz.meineseite.de“ auf dann muss der Server das gleiche Script aufrufen als wenn man „www.meineseite.de“ aufruft. Also alle Inputs müssen auf das selbe Verzeichnis verweisen. Ich weiß nicht wie die Hostinganbieter das Handhaben… da hilft nur eins, ausprobieren.

Aber um das Script erst einmal abzuschließen:
if ($Subdomain == „forum“) {
Wurde die Domain „forum.meineseite.de“ eingegeben? Möchte der User also ins Forum…
include_once(./forum.php);
Wir includen die Forumsdatei. Man könnte hier auch eine Weiterleitung zum Forum machen. Wie gesagt, die möglichkeiten sind groß und verschieden.
} else {
header(„Location: http://www.meineseite.de“);
exit;

Wenn die Subdoamin nicht „forum“ ist dann ist die URL-Eingabe des Users ungültig und wir schicken ihn auf die Hauptdomain mit „www“.
}
?>

So, das war der Codeschnippsel für die Subdomainweiche. Schlicht, einfach und wirkungsvoll. Sicher bei weitem kein ersatz für eine echte Subdomain. Aber dafür greifen wir hier nicht ins System direkt ein. Die Subdomains sind im nu angelegt und auch im nu wieder gelöscht. Die Einbindung der Unterseiten ist sicherlicht etwas komplizierter und auch ein FTP für den User ist nicht soo einfach machbar… aber sonst find ichs ne super Lösung. :)

Und man kann es auch an seine Bedürfnisse anpassen. Mit ein bisschen basteln ist auch ein FTP kein Problem. Das hier ist nur ein Denkanstoß ;)

In Aktion könnte das dann so aussehen: [Subdomain Service]

Wer Verbesserungen und/oder Anregungen hat… immer her damit :)

Gruß
Gordon


Hinweis: Die Verwendung meiner Codeschnipsel erfolgt auf eigene Gefahr! Ich übernehme auch keine Garantie auf Funktionstüchtigkeit (jeder Server ist anders konfiguriert. Bei Problemen können Sie hier aber gern einen Kommentar schreiben und wir suchen eine Lösung. ;)

0 Antworten

Hinterlassen Sie einen Kommentar

Wollen Sie an der Diskussion teilnehmen?
Feel free to contribute!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*