Kullanıcı kayıt sırasında subdomain oluşturma

4 Cevap php

Ben kendi subdomain almak için kaydolmak kullanıcıları istediğiniz bir web sitesi var. Bu alt sanal ve her alt etki alanı aynı web sunucusu dosyaları kullanır.

PHP ve Apache kullanmak, ve ben Sanal Konaklar hakkında biliyorum, ama ben vhosts kodu koymak gerekir nerede merak ediyorum. Birincisi, ben httpd.conf erişimi yok. İkincisi, ben bu kayıt sırasında otomatik olarak yapılmasını istiyoruz.

Ben sanal konaklar hakkında okudum, ama benim soruları cevaplayan bir şey bulamadık. Bütün bu arada nasıl çalıştığını açıklamak bana, ya da ben cevap bulabilirsiniz biliyor kimse var mı?

4 Cevap

Eğer ekstra bir. Conf dosyasını okumak için apache söyleyebilir misiniz? (Geleneksel olarak httpd-vhosts.conf daki sankonlarına saklamak)

eğer öyleyse, aşağıdaki gibi bir şey eklemek ve web sunucusu yeniden

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>

sonra php, kullanıcı teftiş ile isteğinde alt alana hangi görebilirsiniz:

$_SERVER['HTTP_HOST']

yani. Eğer kullanıcı istekleri http://user1.domainname.com/index.php

$ _SERVER ['HTTP_HOST'] user1.domainname.com olacak

Eğer patlayabilir ('.', $ _SERVER ['HTTP_HOST']) her parçayı incelemek için vs ..

(Janek yorumuna esinlenerek)

Apache örneği * yumuşatma için yapılandırılmış IF, daha sonra bir sanal adlı dizi oluşturmak için gerek yoktur - $ _SERVER ['HTTP_HOST'] değerlendirerek PHP ile yapabilirsiniz sahte.

Istenilen sanal adı sunucusuna işaret böylece - Apache örneği ele olmadığını belirlemek için, yerel / etc / hosts dosyasını (% SystemRoot% \ system32 \ drivers \ etc \ hosts veya pencere eşdeğeri) düzenleyin.

Örneğin

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

Bu 192.168.1.4 sizin sunucunun IP olduğunu varsayalım. Takma adlı sunucu denebilecek olduğunu sonra her şey.

Sonra, Janek önerilen doğru adını yakalama eğer echo $_SERVER['HTTP_HOST'] görmek için bir sayfa oluşturmak. Eğer öyleyse, o zaman gerekli olduğunu bir DNS değişikliği ve Apache değişmeden kalabilir.

Aksi apache.conf erişimi olmadan bu koparmak zor olacak (bu tür şeylerin bir çok erişim yok anlamına gelir). Programlama olmayacak - ama uygulama olacaktır.

İşte sebebi:

  1. Apache varsayılan sanal ana kadar görev yapacak. Ancak (genellikle / etc / httpd / conf.d / bulunan) sunucunun conf dizinine erişim gerekiyor böylece Apache yapılandırma eklemeniz kurulum EĞER dosyası ("include" sanal konak oluşturabilirsiniz - En son yükler gerekir ) olacak.

  2. Sen döngüsü Apache (yeniden başlatma) mümkün olması gerekir. Bu olmadan Sanal Sunucu değişikliklerin etkili olmayacak.

  3. Sen DNS değiştirmek mümkün olması gerekir. Her zaman yerel / etc / hosts dosyasını değiştirebilirsiniz - fakat ziyaretçilerin sitenize almak için için, bir DNS değişikliği yoluyla itmek mümkün olması gerekir. (Hangi olabilir anlık - ya da yaymak için 24 saat sürebilir).

Betik kesinlikle (Cpanel ve WHM bakınız) yapılabilir

Bunun için 3 şey gerekir:

1. Set your DNS for *.yourDomain.com

2. Add the ServerAlias directive to the apache configuration for this domain:

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

Ayrıca apache server UseCanonicalName olarak ayarlanmış olduğundan emin olun on (bu varsayılan)

3. Grep the subdomain name with PHP:

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

Öncelikle tüm *.domain.com sunucusunun IP adresine çözmek zorunda kalacak ana IP adresi, yani herhangi bir alt etki alanlarını çözmek için kurulum için DNS sunucusuna ihtiyaç olacaktır. Ardından web sunucusu bazı PHP komut dosyası çağırarak, hem de ne olursa olsun alt alan tüm gelen istekleri işlemek gerekiyor. PHP komut dosyası daha sonra basitçe alanı $_SERVER['HTTP_HOST'] başlığından istenen anlamaya ve buna göre hareket edebilir.

Aslında "kullanıcı kaydı üzerine alt alanlar oluşturmak" değil.