Ile anında Subdomain oluşturun. Htaccess (PHP)

8 Cevap php

Ben kaydolma üzerinde kullanıcıların hesap alanı için web sitemde bir subdomain yaratacak bir sistem oluşturmak için arıyorum.

örneğin johndoe.website.com

Ben o. Htaccess dosyası ve muhtemelen web sitesinde başka bir yere yönlendirme ile ilgili bir şey olacağını düşünüyorum? Ben aslında bilmiyorum. Ama beni başlamak için herhangi bir bilgi büyük takdir.

Bir işaret alanı oluşturma sorun değil - ben bu birçok kez yaptım. i nerede alt etki alanı ile başlamak için sadece emin değilim.

Teşekkürler, Ben.

8 Cevap

The quick rundown

  1. Sen * DNS sunucusunda bir joker etki alanı oluşturmanız gerekir. Website.com
  2. Sonra vhost konteyner size * joker lutfen belirtmeniz gerekir website.com -. Bu ServerAlias DOCs yapılır
  3. Sonra ayıklamak ve doğrulamak subdomain PHP ve uygun verileri görüntülemek

The long version

1. Create a wildcard DNS entry

DNS ayarlarında bir wildcard domain entry gibi *.example.org olarak oluşturmanız gerekir. Bir joker giriş şöyle görünür:

*.example.org.   3600  A  127.0.0.1

2. Include the wildcard in vhost

Sonraki Apache yapılandırmasında up ServerAlias DOCs yönergesi joker belirten bir vhost konteyner kurmak gerekir. Bir örnek vhost konteyner:

<VirtualHost *:80>
  ServerName server.example.org
  ServerAlias *.example.org
  UseCanonicalName Off
</VirtualHost>

3. Work out which subdomain you are on in PHP

Sonra PHP size $_SERVER süper global değişkene bakarak etki öğrenebilirsiniz. Burada PHP alt alanı kapma bir örnektir:

preg_match('/([^.]+)\.example\.org/', $_SERVER['SERVER_NAME'], $matches);
if(isset($matches[1])) {
    $subdomain = $matches[1];
}

Ben www.subdomain.example.org veya subdomain.example.org üzerinden sitenize isabet insanlar için izin vermek için buraya regex kullandık.

Www ile uğraşmak zorunda asla tahmin edin. (Ya da diğer alt alanları) o zaman sadece bu yüzden gibi bir alt kullanabilirsiniz:

$subdomain = substr(
                 $_SERVER['SERVER_NAME'], 0,
                 strpos($_SERVER['SERVER_NAME'], '.')
             );

Mass Virtual Hosting

Kitle sanal hosting genellikle oldukça soru önerdiği gibi bir uygulamayı güç kullanmaya çalışırken daha birçok farklı web sitelerini barındırmak için kullanabilirsiniz edeceğini de yukarıda biraz farklı bir programıdır.

Bunu almak isteyen yol olup olmadığını bakmak olabilir ki, bir post on my blog önce merkezli kitlesel sanal barındırma ortamı benim mod_rewrite'ın belgeledi. respective Apache manual page, tabii ki, aynı zamanda bulunmaktadır.

Apache ayrıca ben kullandım mod_rewrite yöntemin biraz daha az esnek olduğu kitlesel sanal barındırma ile ilgili bir iç yol var. Bu, tüm Apache üzerinde açıklanmıştır Dynamically Configured Mass Virtual Hosting manual page.

Siz ilk etapta her alt etki alanı sağlayacak ve alt alan adı geçerli ise o zaman kontrol edebilir. Örneğin:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^[^.]+\.example\.com$
RewriteRule !^index\.php$ index.php [L]

İç index.php Eğer daha kullanarak subdomain çıkarabilir:

if (preg_match('/^([^.]+)\.example\.com$/', $_SERVER['HTTP_HOST'], $match)) {
    var_dump($match[1]);
}

Ama bütün bu sunucunuzun her subdomain adını kabul gerektirir.

DNS joker kurma ek olarak, ben geçmişte bu çözdük nasıl Dynamic Mass Virtual Hosting for Apache bakmak isteyebilirsiniz

Bu. Htaccess ile ilgisi yok. DNS kayıtları ve alt etki alanları için sanal hosting kurmak gerekir.

The easiest way is to redirect all subdomains (with wildcard *) to point to your /wwwroot. Then put .htaccess to this folder with the following code:

RewriteCond %{ENV:REDIRECT_SUBDOMAIN} ="" 
RewriteCond %{HTTP_HOST} ^([a-z0-9][-a-z0-9]+)\.domain\.com\.?(:80)?$ [NC] 
RewriteCond %{DOCUMENT_ROOT}/%1 -d 
RewriteRule ^(.*) %1/$1 [E=SUBDOMAIN:%1,L] 
RewriteRule ^ - [E=SUBDOMAIN:%{ENV:REDIRECT_SUBDOMAIN},L]

Bu, alt etki yoluyla kabul edilebilirdir / wwwroot klasörünün her alt klasörü (foldername.domain.com) başaracaksınız.

Found this years ago on http://www.webmasterworld.com/apache/3163397.htm

Mod_vhost_alias bunu yapmak için doğru modül olduğunu.

With one line you can tell Apache to look at the right place, with directory hashing, etc. For example, the line:

VirtualDocumentRoot /http/users/%3.1/%3.2/%3

subdomain.yourdomain.com için istendiğinde / http / users / s / u / altalana belge kök ayarlamak için Apache söylemek istiyorum

Ben daha kolay PHP ile yapıyor buldum. Aslında cPanel içinde bir alt etki alanı oluşturma ve istenen alan adı altında bir klasör oluşturun. Eğer cPanel elle yapacağız ama tüm bu basit bir PHP fonksiyonu ile milisaniye yapılıyor gibi. Hiçbir tıklama gerekli :)

http://vikku.info/programming/php/create-subdomain-dynamically-in-php-code-to-create-subdomains-in-server-using-php.htm

Ben Apache Dinamik Kitlesel Sanal Hosting ile wild card DNS da makul bir çözüm olduğunu düşünüyorum. Olsa da, ben bunu hiç denemedim.

Eğer birden fazla sunucu veya diğer çözümlere dışarı ölçekli ihtiyacı varsa, sadece bir veritabanı tabanlı bir DNS sunucusunu kullanmanızı öneririz, sizin için işe yaramazsa. Ben başarıyla geçmişte MyDNS kullandık. Bu MySQL (veya PostgreSQL) kullandığı PHP ile ya da sadece başka bir şey hakkında anında DNS'nizi güncelleyebilirsiniz. Bir süre güncellendi gibi kod görünmüyor, ancak DNS ve bu nedenle tam olarak kesim değil.