Frage

Ich habe eine Website, auf der ich möchte, dass Benutzer, die sich anmelden, ihre eigene Subdomain erhalten.Diese Subdomain ist virtuell und jede Subdomain verwendet dieselben Webserverdateien.

Ich verwende PHP und Apache und kenne mich mit virtuellen Hosts aus, frage mich aber, wo ich den vhosts-Code einfügen muss.Erstens habe ich keinen Zugriff auf httpd.conf.Zweitens möchte ich, dass dies automatisch bei der Registrierung erfolgt.

Ich habe über virtuelle Hosts gelesen, aber nichts gefunden, was meine Fragen beantwortet.Gibt es jemanden, der mir erklären kann, wie das alles zusammenwirkt, oder weiß, wo ich meine Antworten finden kann?

War es hilfreich?

Lösung

Können Sie Apache sagen, eine zusätzliche Conf-Datei zu lesen? (Traditionell speichern Sie Ihre vhosts in httpd-vhosts.conf)

Wenn ja, fügen Sie so etwas wie die folgenden und starten Sie Ihren Web-Server

NameVirtualHost *:80

<VirtualHost *:80>
        DocumentRoot /abs/path/to/webroot
        ServerName   domainname.com
        ServerAlias *.domainname.com
        <Directory /abs/path/to/webroot>
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

dann in PHP, können Sie sehen, welche Sub-Domain der Benutzer anfordert, durch Inspektion:

$_SERVER['HTTP_HOST']

dh. wenn die Nutzer http://user1.domainname.com/index.php

$ _ SERVER [ 'HTTP_HOST'] wird user1.domainname.com

Sie können dann explodieren ( ' ' $ _SERVER [' HTTP_HOST']) jedes Segment zu untersuchen .. etc.

Andere Tipps

Sie müssen 3, was für diese:

1. Legen Sie Ihre DNS für * .ihredomain.com

2. Fügen Sie die Direktive Serveralias an die Apache-Konfiguration für diese Domain:

ServerName www.yourDomain.com
ServerAlias *.yourDomain.com yourDomain.com

Vergewissern Sie sich auch, dass Sie Apache-Server (dies ist die Standardeinstellung)

UseCanonicalName gesetzt hat on

3. Grep die Sub-Domain-Namen mit PHP:

  $nameChunks = explode('.', $_SERVER['HTTP_HOST']);
  $subDomainName = $nameChunks[count($nameChunks) - 3];

(inspiriert von Janeks Kommentar)

WENN Ihre Apache-Instanz für *-Aliasing konfiguriert ist, besteht keine Notwendigkeit, einen virtuellen benannten Host zu erstellen. Sie können ihn mit PHP fälschen, indem Sie $_SERVER['HTTP_HOST'] auswerten.

Um festzustellen, ob Ihre Apache-Instanz damit umgehen kann, bearbeiten Sie Ihre lokale Datei /etc/hosts (oder die entsprechende Windows-Datei – %SystemRoot%\system32\drivers\etc\hosts), sodass der gewünschte virtuelle Name auf Ihren Server verweist.

Zum Beispiel

# An example HOSTS file.
192.168.1.4 testserver testserver.com subdomain.testserver.com secondname.com

Dabei wird davon ausgegangen, dass 192.168.1.4 die IP Ihres Servers ist.Alles danach sind Alias, mit denen der Server aufgerufen werden kann.

Dann erstellen Sie, wie Janek vorgeschlagen hat, eine Seite, die das tut echo $_SERVER['HTTP_HOST'] um zu sehen, ob der Name richtig erfasst wird.Wenn ja, ist lediglich eine DNS-Änderung erforderlich und Apache kann unverändert bleiben.

Andernfalls wird es ohne Zugriff auf Apache.conf (das bedeutet, dass Sie auf viele Dinge keinen Zugriff haben) schwierig sein, dies zu bewerkstelligen.Die Programmierung wird es nicht sein – aber die Umsetzung schon.

Hier ist der Grund:

  1. Apache stellt standardmäßig virtuelle Hosts bereit.Sie benötigen jedoch Zugriff auf das conf-Verzeichnis des Servers (häufig in /etc/httpd/conf.d/ zu finden), damit Sie die „include“-Datei des virtuellen Hosts erstellen können (WENN die Apache-Konfiguration so eingerichtet ist, dass sie einbezogen wird – die neuesten Installationen sollten dies tun). Sei).

  2. Sie müssen in der Lage sein, Apache neu zu starten.Ohne dies werden die Änderungen am virtuellen Host nicht wirksam.

  3. Sie müssen in der Lage sein, den DNS zu ändern.Sie können Ihre lokale Datei /etc/hosts jederzeit ändern. Damit Besucher jedoch auf Ihre Website gelangen, müssen Sie in der Lage sein, eine DNS-Änderung durchzusetzen.(Das kann augenblicklich sein – oder es kann 24 Stunden dauern, bis es sich ausbreitet).

Das Scripting kann durchaus durchgeführt werden (siehe Cpanel und WHM)

Sie werden zunächst auf Setup müssen Sie den DNS-Server alle Sub-Domains auf Ihre Haupt-IP-Adresse aufzulösen, das heißt *.domain.com müssen Ihre Server die IP-Adresse aufzulösen. Dann muss der Web-Server alle eingehenden Anfragen unabhängig von Sub-Domain zu handhaben als auch, einige PHP-Skript aufgerufen wird. Die PHP-Skript kann dann einfach herauszufinden, welche Domäne aus dem $_SERVER['HTTP_HOST'] Header angefordert wurde und entsprechend handeln.

Sie sind nicht wirklich "creating Domänen auf Benutzerregistrierung".

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top