2012-11-26 15 views
14

Chcę mieć taką sytuację:Tworzenie Wildcard Sub Domain Korzystanie Apache VirtualHost

  1. jeżeli żądanie użytkownika przy użyciu tego adresu URL: example.com lub www.example.com, użytkownik zobaczy index.php w tym katalogu /home/admin1/public_html/

  2. ale gdy żądanie użytkownika używa innej poddomeny (wieloznacznej), na przykład: freediscount.example.com, użytkownik zobaczy w tej ścieżce: /home/admin1/public_html/userweb/freediscount.example.com

wsparcie techniczne na moim hostingu sugerują mnie do korzystania z tej metody: http://www.wiredstudios.com/php-programming/setting-up-wildcard-dns-for-subdomains-on-cpanel.html

na podstawie tego tutoriala, PHP ma nową pracę ... przekierować na żądanie określonego folderu, gdy użytkownik z domeny sub. Nie podoba mi się ta metoda. dla mnie byłoby lepiej, gdyby Apache sobie z tym poradził.

prawie blisko tego, co potrzebne jest to metoda: Virtualhost For Wildcard Subdomain and Static Subdomain

ale mam problem z VirtualHost otoczeniu, jak stworzyć VirtualHost prawidłowo dla tej sytuacji?

oto co zrobiłem, ale nie działa:

## 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> 

Odpowiedz

14

Subdomeny Wildcard są zdecydowanie możliwe dzięki wirtualnym hostom Apache.

Miałem zasadniczo te same wymagania i udało mi się je uruchomić z modułem Apache o numerze mod_vhost_alias.so. Spróbuj tego w pliku http-vhosts.conf:

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> 

pamiętać, że nie testowałem tego, ale to jest dość blisko do roztworu, który pracował dla mnie.

Pełne dane mojego rozwiązania są tutaj: http://www.calcatraz.com/blog/wildcard-subdomains-in-apache-1422

+0

Link jest martwy od dzisiaj. – kontur

8

Spróbuj z tym:

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> 

Order hostów wirtualnych & swoich sprawach swoistości.

+0

freediscount.example.com jest tylko przykładem. w realnym świecie użytkownik może wpisać subdomenę, którą utworzył. na przykład: mystore.example.com >> /home/admin1/public_html/userweb/mystore.example.com –

+0

, więc nie sądzę, aby stał się on statyczny DocumentRoot rozwiąże ten problem. Jest dynamiczny. –

+0

Nie można tworzyć symboli wieloznacznych DocumentRoots. Musisz to zrobić poprzez plik .htaccess lub poprzez php. To jest to, co możesz zrobić z wirtualnymi hostami, tak jak jest. MAYM, jest mod apache, aby dbać o to, co chcesz. Ale tak jak jest, to jest to, myślę. –