2012-11-26 11 views
14

Ich möchte diese Situation haben:Erstellen Wildcard Sub-Domäne mit Hilfe von Apache Virtual

  1. wenn Anfrage Benutzer mit diesem URL: example.com oder www.example.com, Benutzer index.php in diesem Verzeichnis /home/admin1/public_html/

  2. sehen aber Wenn der Benutzer eine andere Subdomäne (Platzhalter) anfordert, zum Beispiel: freediscount.example.com, wird der Benutzer index.php in diesem Pfad sehen: /home/admin1/public_html/userweb/freediscount.example.com

technische Unterstützung für mein Hosting mir empfehlen, diese Methode zu verwenden: http://www.wiredstudios.com/php-programming/setting-up-wildcard-dns-for-subdomains-on-cpanel.html

auf diesem Tutorial basiert, die PHP einen neuen Job hat ... auf bestimmten Ordner, wenn Benutzeranforderung mit Sub-Domain zu umleiten. Ich mag diese Methode nicht. für mich wäre es besser, wenn Apache damit umgehen könnte.

fast nahe, was ich brauche, ist diese Methode: Virtualhost For Wildcard Subdomain and Static Subdomain

aber, habe ich ein Problem mit VirtualHost Einstellung, wie VirtualHost für diese Situation richtig zu schaffen?

hier ist, was ich getan habe, aber hat nicht funktioniert:

## I think this one is for www or without www, automatically generated with WHM 
<VirtualHost xx.xx.xx.xx:80> 
ServerName example.com 
ServerAlias www.example.com 
DocumentRoot /home/admin1/public_html 
</VirtualHost> 

## Here's what I'm trying to add 
<VirtualHost xx.xx.xx.xx:80> 
    ServerName example.com 
    DocumentRoot /home/admin1/public_html/userweb/* 
</VirtualHost> 

Antwort

14

Wildcard-Subdomains sind auf jeden Fall mit virtuellen Apache-Hosts möglich.

Ich hatte im Grunde die gleichen Anforderungen und schaffte es mit Apaches mod_vhost_alias.so Modul arbeiten. Versuchen Sie dies in Ihrer http-vhosts.conf Datei:

DocumentRoot "/home/admin1/public_html/userweb/" 
<Directory "/home/admin1/public_html/userweb/"> 
    Options None 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
</Directory> 

<VirtualHost *:80> 
    DocumentRoot /home/admin1/public_html/ 
    ServerName www.example.com 
</VirtualHost> 

<VirtualHost *:80> 
    VirtualDocumentRoot /home/admin1/public_html/userweb/%1.example.com/ 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot /home/admin1/public_html/ 
    ServerName example.com 
</VirtualHost> 

Bitte beachte, dass ich dies nicht getestet, aber es ist ziemlich nah an die Lösung, die für mich gearbeitet.

Vollständige Einzelheiten meiner Lösung sind hier: http://www.calcatraz.com/blog/wildcard-subdomains-in-apache-1422

+0

Link tot heute. – kontur

8

mit Try this:

NameVirtualHost *:80 

<VirtualHost *:80> 
    DocumentRoot /home/admin1/public_html/ 
    ServerName www.example.com 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot /home/admin1/public_html/userweb/freediscount.example.com 
    ServerName other.example.com 
    ServerAlias *.example.com 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot /home/admin1/public_html/ 
    ServerName example.com 
</VirtualHost> 

Reihenfolge der virtuellen Hosts & ihre Spezifität Angelegenheiten.

+0

freediscount.example.com nur ein Beispiel ist. In einer realen Welt kann der Benutzer die von ihnen erstellte Subdomain eingeben. Zum Beispiel: mystore.example.com >> /home/admin1/public_html/userweb/mystore.example.com –

+0

Ich glaube nicht, dass DocumentRoot dieses Problem lösen wird, wenn es statisch gemacht wird. Es ist dynamisch. –

+0

Sie können keine Platzhalter für DocumentRoots erstellen. Sie müssen dies durch .htaccess-Datei oder durch php tun. Das können Sie mit virtualhosts so machen wie es ist. MAybe gibt es Apache-Mod, um auf das zu achten, was Sie wollen. Aber wie es ist, denke ich. –

Verwandte Themen