¿Cómo permitir que PHP cree un subdominio automáticamente para cada usuario?

Resuelto Skuta asked hace 54 años • 12 respuestas

¿ Cómo creo un subdominio como http://user.mywebsite.example? ¿ Tengo que acceder .htaccessde 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?

Skuta avatar Jan 01 '70 08:01 Skuta
Aceptado

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.1serí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_HOSTencabezado 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/usersería mucho más fácil de configurar si es una opción.

Mark Biek avatar Oct 08 '2008 17:10 Mark Biek

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.confarchivo del servidor, en lugar de en un archivo .htaccess.

balupton avatar Sep 01 '2010 11:09 balupton

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.phparchivo. 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.phpcódigo simplemente exploto mi nombre de usuario del nombre de host. Esto me da bonitas URL de SEO.

gradbot avatar Oct 08 '2008 18:10 gradbot