reescritura de Apache para asignar carpetas a dominios

reescritura de Apache para asignar carpetas a dominios

Por favor, indíqueme la dirección correcta.

Estoy usando .htaccess para configurar dominios en mi servidor.

Necesito dominio.com para acceder a los archivos desde la carpeta /domain.com/*. Si un archivo no existe, cargue /domain.com/index.php y domain.com/images/image.jpg debería cargar el archivo: /domain.com/images/image.jpg

Una cosa es que debería cargar todo sin enviar avisos 302 de "archivo movido" al navegador.

¡Gracias por tu ayuda!

Respuesta1

Si tiene muchos dominios, o incluso si tiene sólo unos pocos dominios pero todos tienen más o menos la misma configuración, este es el tipo de situación quealojamiento virtual masivo dinámicoestá hecho para. Algo como esto iría en su httpd.confarchivo (o en un archivo incluido en httpd.conf):

UseCanonicalName Off
VirtualDocumentRoot /var/www/%0/htdocs
ErrorLog /var/www/logs/error_log
CustomLog /var/www/logs/access_log combined

Yo también sugeriría

DirectoryIndex index.php

para cargar el index.phparchivo en un directorio si el cliente no especifica un nombre de archivo.

Respuesta2

Debe crear un host virtual para cada dominio que desee asignar a una ruta de archivo y especificar DocumentRoot de cada vhost a la ruta real en el sistema de archivos. Luego, querrá asegurarse de tener un host virtual PREDETERMINADO, de modo que todas las demás solicitudes de dominios que no estén configurados utilicen el host virtual PREDETERMINADO. Por último, querrás crear un controlador de errores 404 personalizado, de modo que si el archivo que se solicita no existe, proporcione contenido alternativo. Necesitará crear un php llamado custom_404.php que muestre un mensaje genérico y su /images/image.png.

# Default Domain (Undefined domains will fall back to this)
<VirtualHost *:80>
    ServerAlias www.defaultdomain.com
    DocumentRoot /var/www/default/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/default/logs/error_log
    CustomLog /var/www/default/logs/access_log combined
</VirtualHost>

# domain1.com
<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /var/www/domain1.com/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/domain1.com/logs/error_log
    CustomLog /var/www/domain1.com/logs/access_log combined
</VirtualHost>

# domain2.com
<VirtualHost *:80>
    ServerName domain2.com
    ServerAlias www.domain2.com
    DocumentRoot /var/www/domain2.com/htdocs
    ErrorDocument 404 /custom_404.php
    ErrorLog /var/www/domain2.com/logs/error_log
    CustomLog /var/www/domain2.com/logs/access_log combined
</VirtualHost>

¡Espero que esto ayude!

-Kevin

Respuesta3

Necesita utilizar hosts virtuales para organizar esto. Aquí hay un archivo de host virtual de muestra.

<VirtualHost *:80>
    ServerName example.net
    ServerAlias www.example.net
    ServerAdmin [email protected]
    DocumentRoot /var/www/vhosts/www.example.net/html
    ErrorLog /var/www/vhosts/www.example.net/logs/errors.log
    Customlog /var/www/vhosts/www.example.net/logs/access.log combined

</VirtualHost>

Coloque este archivo dentro de /etc/httpd/conf.d/ y llámelo, por ejemplo, vhost_example.net.conf

Y luego agregue dentro de /etc/httpd/conf/httpd.conf en, por ejemplo, la última línea

Incluir /etc/httpd/conf.d/vhost_example.net.conf

(o simplemente incluya /etc/httpd/conf.d/*.conf ) Y en el archivo httpd.conf, recuerde dejar esta línea sin comentar

NombreVirtualHost *:80

información relacionada