Certifique-se de ter ativado a diretiva para permitir hosts virtuais nomeados. Quero dizer:
NameVirtualHost *:80
... no seu arquivo /etc/httpd/conf/httpd.conf.
Eu tenho o seguinte arquivo de configuração na minha máquina Debian:
<VirtualHost *:80>
ServerAdmin [email protected]
VirtualDocumentRoot /var/workspace/www/%2_%3/%1
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/workspace/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
O que é ótimo para automação - eu apenas criei um diretório em um caminho específico e o domínio apenas começou a funcionar.
Mas às vezes eu preciso lançar aplicativos, que tem docroots em algum outro lugar (tipicamente www dir ou outra coisa), como eu especifico este VirtualHosts e continuo trabalhando os antigos VirtualHosts automáticos?
Quando eu adiciono, e. isso:
<VirtualHost *:80>
ServerName www.phabricator.com.local
DocumentRoot /var/workspace/www/phabricator_com/www/webroot
RewriteEngine on
RewriteRule ^/rsrc/(.*) - [L,QSA]
RewriteRule ^/favicon.ico - [L,QSA]
RewriteRule ^(.*)$ /index.php?__path__=$1 [L,QSA]
SetEnv PHABRICATOR_ENV custom/socialbakers
</VirtualHost>
Ele encaminha todas as solicitações em /var/workspace/www/phabricator_com/www/webroot
e ignora as outras vhosts (mencionadas acima).
Por quê?
Certifique-se de ter ativado a diretiva para permitir hosts virtuais nomeados. Quero dizer:
NameVirtualHost *:80
... no seu arquivo /etc/httpd/conf/httpd.conf.
Tem certeza de que forneceu o nome correto depois de ServerName
? Quer dizer, termina com .local
; é o que a solicitação HTTP Host
header contém? Se houver Host
de cabeçalho na solicitação de HTTP não corresponder a nenhum dos vhosts baseados em nome (ou se a solicitação não tiver Host
header), o primeiro vhost será usado.
Tags linux unix apache-http-server