Le rapide aperçu
- Vous devez créer un domaine générique sur votre serveur DNS * .website.com
- Ensuite, dans votre conteneur vhost, vous devrez également spécifier le caractère générique * .website.com - Ceci est fait dans les
ServerAlias
DOCs
- Ensuite, extrayez et vérifiez le sous-domaine en PHP et affichez les données appropriées
La version longue
1. Créez une entrée DNS générique
Dans vos paramètres DNS, vous devez créer une entrée de domaine générique telle que *.example.org
. Une entrée générique ressemble à ceci:
*.example.org. 3600 A 127.0.0.1
2. Incluez le caractère générique dans vhost
Ensuite, dans la configuration Apache, vous devez configurer un conteneur vhost qui spécifie le caractère générique dans la directive ServerAlias
DOCs . Un exemple de conteneur vhost:
<VirtualHost *:80>
ServerName server.example.org
ServerAlias *.example.org
UseCanonicalName Off
</VirtualHost>
3. Déterminez sur quel sous-domaine vous vous trouvez en PHP
Ensuite, dans vos scripts PHP, vous pouvez trouver le domaine en regardant dans la $_SERVER
variable super globale. Voici un exemple de capture du sous-domaine en PHP:
preg_match('/([^.]+)\.example\.org/', $_SERVER['SERVER_NAME'], $matches);
if(isset($matches[1])) {
$subdomain = $matches[1];
}
J'ai utilisé l'expression régulière ici pour permettre aux personnes d'accéder à votre site via www.subdomain.example.org ou subdomain.example.org.
Si vous ne prévoyez jamais avoir à traiter avec www. (ou d'autres sous-domaines) alors vous pouvez simplement utiliser une sous-chaîne comme ceci:
$subdomain = substr(
$_SERVER['SERVER_NAME'], 0,
strpos($_SERVER['SERVER_NAME'], '.')
);
Hébergement virtuel de masse
L'hébergement virtuel de masse est un schéma légèrement différent de celui ci-dessus en ce sens que vous l'utiliseriez généralement pour héberger de nombreux sites Web distincts plutôt que d'essayer de l'utiliser pour alimenter une application comme le propose la question.
J'ai déjà documenté mon environnement d'hébergement virtuel de masse basé sur mod_rewrite dans un article sur mon blog , que vous pouvez consulter si c'est la route que vous souhaitez emprunter. Il y a aussi, bien sûr, la page de manuel Apache respective .
Apache a également un moyen interne de gérer l'hébergement virtuel de masse qui est légèrement moins flexible que la méthode mod_rewrite que j'ai utilisée. Tout cela est décrit sur la page de manuel de l'hébergement virtuel de masse Apache configuré dynamiquement .
wildcard subdomains
, consultez ma solution pour le faire dans.htaccess
.RewriteRule "^/?(.*)" "http://%{HTTP_HOST}/%{HTTP_HOST}/$1" [L,R,NE]
Vous pouvez autoriser chaque sous-domaine en premier lieu, puis vérifier si le sous-domaine est valide. Par exemple:
Dans le,
index.php
vous pouvez extraire le sous-domaine en utilisant:Mais tout cela nécessite que votre serveur Web accepte chaque nom de sous-domaine.
la source
En plus de configurer un caractère générique DNS, vous voudrez peut-être jeter un coup d'œil à Dynamic Mass Virtual Hosting for Apache, c'est ainsi que j'ai résolu ce problème dans le passé.
la source
J'ai trouvé plus facile de le faire avec PHP. En fait, c'est créer un sous-domaine dans cPanel et créer votre dossier sous le nom de domaine souhaité. Comme vous le ferez manuellement dans cPanel mais tout est fait en millisecondes par une simple fonction PHP. Aucun clic nécessaire :)
la source
Le moyen le plus simple est de rediriger tous les sous-domaines (avec un caractère générique *) pour qu'ils pointent vers votre / wwwroot. Ensuite, placez .htaccess dans ce dossier avec le code suivant:
Cela permettra à chaque sous-dossier du dossier / wwwroot d'être acceptable via le sous-domaine (nomdossier.domaine.com).
Trouvé il y a des années sur http://www.webmasterworld.com/apache/3163397.htm
la source
Cela n'a rien à voir avec .htaccess. Vous devrez configurer des enregistrements DNS et un hébergement virtuel pour les sous-domaines.
la source
Mod_vhost_alias est le bon module pour cela.
Avec une ligne, vous pouvez dire à Apache de regarder au bon endroit, avec le hachage de répertoire, etc. Par exemple, la ligne:
dirait à Apache de définir la racine du document sur / http / users / s / u / sous-domaine lorsque cela est demandé pour sous-domaine.votredomaine.com
la source
Je pense que le DNS générique avec l'hébergement virtuel de masse dynamique d'Apache est également une solution raisonnable. Bien que je ne l'ai jamais essayé.
Si vous avez besoin de passer à plusieurs serveurs ou que les autres solutions ne fonctionnent tout simplement pas pour vous, je vous recommande d'utiliser un serveur DNS basé sur une base de données. J'ai utilisé avec succès MyDNS dans le passé. Puisqu'il utilise MySQL (ou PostgreSQL), vous pouvez mettre à jour votre DNS à la volée avec PHP ou à peu près n'importe quoi d'autre. Le code ne semble pas avoir été mis à jour depuis un certain temps, mais c'est du DNS et donc pas exactement de pointe.
la source
Méthodes de création de sous-domaine Wildcard
Vous devez d'abord créer les paramètres DNS à l'aide de l'éditeur DNS de votre serveur.
Créez un
A
enregistrement dans les paramètres DNS avec*
un joker d'hôte dans l'adresse IP du serveur.* 1400 IN A ip_address
Créez à nouveau un
A
enregistrement dans les paramètres DNS avec l'hôte@
oudomain_name.tld
dans l'adresse IP du serveur. tld signifie les domaines de premier niveau ou l'extension des domaines tels que .com, .org, etc ....@ 1400 IN A ip_address
oudomain_name.tld 1400 IN A ip_address
Créez un
CNAME
enregistrement comme:www 1400 IN A domainname.tld
*
caractère générique comme*.domain.tld
Créez htaccess dans votre répertoire de sous-domaine
*.domain.tld
et mettez ce code:Testez votre premier sous-domaine générique comme
example.domainname.tld
Si vous n'êtes pas intéressé à passer les données en tant que paramètre à l'aide du htaccess, vous pouvez également obtenir les données en utilisant le codage suivant:
et utilisez votre variable globale à n'importe quel endroit comme
global $get_data
.(note: Cette classe est principalement utilisée pour obtenir le sous-domaine exact à partir de
http_host
. parce que certains noms supplémentaires combinés avant votre sous-domaine sont également applicables commewww.example.domainname.tld
. Ce retour$_GET['data']='wwww'
Donc, ma suggestion est d'utiliser$_SERVER['http_host']
pour obtenir les valeurs exactes au lieu d'utiliser les$_SERVER['query_string']
paramètres htaccess ou passés dans votre page d'index)6. Accélérez l'exécution de ce sous-domaine générique utilise N secondes dans TTL - PARAMÈTRES DNS.
7.Vérifiez le sous-domaine après votre temps ttl donné (600-10 minutes) comme =>
http://abc.domain.tld
(Remarque: les sous-domaines génériques ne remplacent pas les sous-domaines existants. Parce que la première priorité est toujours pour vos sous-domaines existants)
la source