Httpd / Apache2 host virtual e conflito de nome de host

1

Eu tenho um domínio, ou seja, test.example.com.

Eu configurei o nome do host do meu servidor para isso por uisng:

hostname test.example.com

Eu então adiciono um host virtual em /etc/httpd/conf/httpd.conf

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /var/www/html/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html/mydir
    ServerName test.example.com
    ServerAlias www.test.example.com
</VirtualHost>

Eu, então, reinicio o serviço Httpd. Se eu tentar acessar test.example.com, eu obtenho o index.php em / var / www / html e não a pasta especificada. Se eu alterar o nome do host para algo diferente disso e, em seguida, reiniciar o httpd, o host virtual funcionará como esperado, portanto, só posso assumir que, quando há uma conexão de entrada para o nome do host, o apache retira a URL.

Em php ao imprimir

$_SERVER['REQUEST_URI']
$_SERVER['REDIRECT_URL']

Eu recebo /. Alguém pode me dizer como pode superar o problema ou devo manter o nome de host definido como outra coisa? Eu tenho um script de backup que usa o nome do host como um nome de diretório para que eu possa organizar os backups bem, esta é a principal razão que eu mudei o nome do host em primeiro lugar.

    
por The Humble Rat 18.12.2015 / 13:11

2 respostas

2

No seu caso, eu substituiria

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /var/www/html/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/html/mydir
    ServerName test.example.com
    ServerAlias www.test.example.com
</VirtualHost>

por

<VirtualHost *:80>
    DocumentRoot /var/www/html/mydir
    ServerName test.example.com
    ServerAlias www.test.example.com
</VirtualHost>

# /!\ THIS HAS TO BE ON THE LAST POSITION /!\
<VirtualHost *:80 *:443>
ServerName localhost
ServerAlias *
DocumentRoot /var/www/html/
</VirtualHost>

Como todo pedido que não seja test.example.com & www.test.example.com entregará / var / www / html /

Mais informações: NameVirtualHost não tem uso no seu caso e foi removido no Apache 2.4 link

    
por 18.12.2015 / 15:06
2

O que eu recomendaria está mudando:

<VirtualHost *:80>
    DocumentRoot /var/www/html/
</VirtualHost>

para:

<VirtualHost *:80>
    DocumentRoot /var/www/html/
    ServerName example.com
    ServerAlias www.example.com
</VirtualHost>

Eu já vi isso várias vezes em servidores de clientes e isso resolveu o problema.

Eu normalmente aponto a entrada do Host Virtual com um nome de servidor para um diretório com um arquivo php em breve ou futuro, até que esteja pronto para levar um servidor ou site ao vivo, pois terá precedência sobre quaisquer entradas futuras.

    
por 18.12.2015 / 14:58