¿Cómo permitir que PHP cree un subdominio automáticamente para cada usuario?
¿ Cómo creo un subdominio como http://user.mywebsite.example
? ¿ Tengo que acceder .htaccess
de alguna manera? ¿Es realmente posible crearlo a través de código PHP puro o necesito usar algún lenguaje de script externo del lado del servidor?
A los que respondieron: Bueno, entonces, ¿debería preguntarle a mi hosting si proporcionan algún tipo de acceso DNS?
Está buscando crear un registro A personalizado .
Estoy bastante seguro de que puedes usar comodines al especificar registros A, lo que te permitiría hacer algo como esto:
*.mywebsite.example IN A 127.0.0.1
127.0.0.1
sería la dirección IP de su servidor web. El método para agregar el registro dependerá de su anfitrión.
Luego necesita configurar su servidor web para servir a todos los subdominios.
- Nginx:
server_name .mywebsite.example
- Apache:
ServerAlias *.mywebsite.example
Con respecto a .htaccess, realmente no necesitas ninguna regla de reescritura. El HTTP_HOST
encabezado también está disponible en PHP, por lo que ya puedes obtenerlo, como
$username = strtok($_SERVER['HTTP_HOST'], ".");
Si no tiene acceso a la configuración del servidor web/DNS, hacerlo http://mywebsite.example/user
sería mucho más fácil de configurar si es una opción.
La característica que busca se llama Subdominios comodines . Le permite no tener que configurar DNS para cada subdominio y, en su lugar, utilizar reescrituras de Apache para la redirección. Puedes encontrar un buen tutorial aquí , pero hay miles de tutoriales disponibles. Aquí está el código necesario de ese tutorial:
<VirtualHost 111.22.33.55>
DocumentRoot /www/subdomain
ServerName www.domain.example
ServerAlias *.domain.example
</VirtualHost>
Sin embargo, como requiere el uso de VirtualHosts, debe configurarse en el httpd.conf
archivo del servidor, en lugar de en un archivo .htaccess
.
Lo hago un poco diferente a Mark. Paso todo el dominio y tomo el subdominio en PHP.
RewriteCond {REQUEST_URI} !\.(png|gif|jpg)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?uri=$1&hostName=%{HTTP_HOST}
Esto ignora las imágenes y asigna todo lo demás a mi index.php
archivo. Así que si voy a
http://fred.mywebsite.example/album/Dance/now
vuelvo
http://fred.mywebsite.example/index.php?uri=album/Dance/now&hostName=fred.mywebsite.example
Luego, en mi index.php
código simplemente exploto mi nombre de usuario del nombre de host. Esto me da bonitas URL de SEO.