El resumen rápido
- Debe crear un dominio comodín en su servidor DNS * .website.com
- Luego, en su contenedor vhost, también deberá especificar el comodín * .website.com: esto se hace en los
ServerAlias
DOC
- Luego extraiga y verifique el subdominio en PHP y muestre los datos apropiados
La versión larga
1. Crear una entrada DNS comodín
En su configuración de DNS, debe crear una entrada de dominio comodín como *.example.org
. Una entrada comodín tiene este aspecto:
*.example.org. 3600 A 127.0.0.1
2. Incluya el comodín en vhost
A continuación, en la configuración de Apache, debe configurar un contenedor vhost que especifique el comodín en la directiva ServerAlias
DOC . Un ejemplo de contenedor vhost:
<VirtualHost *:80>
ServerName server.example.org
ServerAlias *.example.org
UseCanonicalName Off
</VirtualHost>
3. Determine en qué subdominio se encuentra en PHP
Luego, en sus scripts PHP, puede encontrar el dominio buscando en la $_SERVER
variable súper global. Aquí hay un ejemplo de agarrar el subdominio en PHP:
preg_match('/([^.]+)\.example\.org/', $_SERVER['SERVER_NAME'], $matches);
if(isset($matches[1])) {
$subdomain = $matches[1];
}
He usado regex aquí para permitir que las personas accedan a su sitio a través de www.subdomain.example.org o subomain.example.org.
Si nunca anticipa tener que lidiar con www. (u otros subdominios), entonces simplemente podría usar una subcadena como esta:
$subdomain = substr(
$_SERVER['SERVER_NAME'], 0,
strpos($_SERVER['SERVER_NAME'], '.')
);
Hosting virtual masivo
El alojamiento virtual masivo es un esquema ligeramente diferente al anterior, ya que generalmente lo usaría para alojar muchos sitios web distintos en lugar de intentar usarlo para alimentar una aplicación como lo propone la pregunta.
He documentado mi entorno de alojamiento virtual masivo basado en mod_rewrite antes en una publicación en mi blog , que podría ver si esa es la ruta que desea tomar. También existe, por supuesto, la página de manual de Apache respectiva .
Apache también tiene una forma interna de tratar con el alojamiento virtual masivo que es un poco menos flexible que el método mod_rewrite que he usado. Todo esto se describe en la página del manual de Apache Virtual Mass Hosting configurado dinámicamente .
wildcard subdomains
, vea mi solución para hacerlo.htaccess
.RewriteRule "^/?(.*)" "http://%{HTTP_HOST}/%{HTTP_HOST}/$1" [L,R,NE]
Puede permitir cada subdominio en primer lugar y luego verificar si el subdominio es válido. Por ejemplo:
Dentro del
index.php
puede extraer el subdominio usando:Pero todo esto requiere que su servidor web acepte cada nombre de subdominio.
fuente
Además de configurar un comodín DNS, es posible que desee echar un vistazo a Dynamic Mass Virtual Hosting para Apache, que es cómo lo resolví en el pasado
fuente
Me resultó más fácil hacerlo con PHP. De hecho, es crear un subdominio dentro de cPanel y crear su carpeta con el nombre de dominio deseado. Como lo hará manualmente en cPanel, pero todo se hace en milisegundos mediante una simple función PHP. No es necesario hacer clic :)
fuente
La forma más fácil es redirigir todos los subdominios (con comodín *) para que apunten a su / wwwroot. Luego ponga .htaccess a esta carpeta con el siguiente código:
Esto logrará que cada subcarpeta de la carpeta / wwwroot sea aceptable a través del subdominio (foldername.domain.com).
Encontrado hace años en http://www.webmasterworld.com/apache/3163397.htm
fuente
No tiene nada que ver con .htaccess. Deberá configurar registros DNS y alojamiento virtual para los subdominios.
fuente
Mod_vhost_alias es el módulo correcto para hacer esto.
Con una línea puede decirle a Apache que busque el lugar correcto, con hashing de directorios, etc. Por ejemplo, la línea:
le indicaría a Apache que establezca la raíz del documento en / http / users / s / u / subdominio cuando se le solicite subdominio.sudominio.com
fuente
Creo que el DNS comodín con Dynamic Mass Virtual Hosting de Apache también es una solución razonable. Aunque, nunca lo he intentado.
Si tiene la necesidad de escalar a varios servidores o las otras soluciones simplemente no funcionan para usted, le recomiendo usar un servidor DNS controlado por una base de datos. He utilizado con éxito MyDNS en el pasado. Como utiliza MySQL (o PostgreSQL), puede actualizar su DNS sobre la marcha con PHP o casi cualquier otra cosa. El código no parece que haya sido actualizado desde hace tiempo, pero es DNS y, por lo tanto, no es exactamente lo último.
fuente
Métodos de creación de subdominios comodín
Primero debe crear la configuración de DNS utilizando el editor de DNS de su servidor.
Cree un
A
registro en la configuración de DNS con el*
comodín del host en la dirección IP del servidor.* 1400 IN A ip_address
Cree una vez más un
A
registro en la configuración de DNS con el host@
o ladomain_name.tld
dirección IP del servidor. tld significa dominios de nivel superior o la extensión de dominios como .com, .org, etc.@ 1400 IN A ip_address
odomain_name.tld 1400 IN A ip_address
Crear
CNAME
registro como:www 1400 IN A domainname.tld
*
comodín como*.domain.tld
Crea htaccess en tu directorio de subdominio
*.domain.tld
y pon este código:Pruebe su primer subdominio comodín como
example.domainname.tld
Si no le interesa pasar los datos como parámetro utilizando htaccess, también puede obtener los datos mediante la siguiente codificación:
y usa tu variable global en cualquier lugar como
global $get_data
.(nota: esta clase se usa principalmente para obtener el subdominio exacto de
http_host
. porque algunos nombres adicionales combinados antes de su subdominio también son aplicables comowww.example.domainname.tld
. Este retorno$_GET['data']='wwww'
Entonces, mi sugerencia es usar$_SERVER['http_host']
para obtener los valores exactos en lugar de usar el$_SERVER['query_string']
parámetros htaccess pasados en su página de índice)6. Acelere la ejecución de este subdominio comodín use N segundos en TTL - CONFIGURACIÓN DNS.
7.Compruebe el subdominio después de su tiempo ttl dado (600-10 minutos) como =>
http://abc.domain.tld
(nota: los subdominios comodín no anulan los subdominios existentes. Porque la primera prioridad siempre es para sus subdominios existentes)
fuente