reescrita do apache para atribuir pastas a domínios

reescrita do apache para atribuir pastas a domínios

Por favor me aponte na direção correta.

Estou usando .htaccess para configurar domínios em meu servidor.

Preciso de domain.com para acessar arquivos da pasta /domain.com/*. Se um arquivo não existir, carregue /domain.com/index.php e domain.com/images/image.jpg deve carregar o arquivo: /domain.com/images/image.jpg

Uma coisa é que ele deve carregar tudo sem enviar 302 avisos de “arquivo movido” ao navegador.

Obrigado pela ajuda!

Responder1

Se você possui muitos domínios, ou mesmo se possui apenas alguns domínios, mas todos eles têm mais ou menos a mesma configuração, esse é o tipo de situação quealojamento virtual em massa dinâmicoé feito para. Algo assim iria para o seu httpd.confarquivo (ou em um arquivo incluído em httpd.conf):

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

Eu também sugeriria

DirectoryIndex index.php

para carregar o index.phparquivo em um diretório se o cliente não especificar um nome de arquivo.

Responder2

Você deve criar um host virtual para cada domínio que deseja mapear para um caminho de arquivo e especificar o DocumentRoot de cada vhost para o caminho real no sistema de arquivos. Então, você vai querer ter certeza de ter um vhost DEFAULT, para que todas as outras solicitações de domínios que não estão configurados usem o vhost DEFAULT. Por último, você desejará criar um manipulador de erro 404 personalizado, para que, se o arquivo que está sendo solicitado não existir, ele forneça conteúdo alternativo. Você precisará criar um php chamado custom_404.php que exiba uma mensagem genérica e seu /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 isto ajude!

-Kevin

Responder3

Você precisa usar hosts virtuais para organizar isso. Aqui está um exemplo de arquivo de host virtual.

<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 arquivo dentro de /etc/httpd/conf.d/ E chame-o, por exemplo, de vhost_example.net.conf

E então adicione dentro de /etc/httpd/conf/httpd.conf, por exemplo, a última linha

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

(ou apenas Incluir /etc/httpd/conf.d/*.conf ) E no arquivo httpd.conf, lembre-se de deixar esta linha descomentada

NomeVirtualHost *:80

informação relacionada