Estou configurando um novo servidor (droplet) com Ubuntu 18.04.1 LTS. Instalei o apache e configurei hosts virtuais. O nome do servidor é www.speedysoftware.com e este é o valor de /etc/hostname
. O problema é que estou tentando redirecionar http://www.speedysoftware.com/ para um host virtual específico, mas é redirecionado para o host virtual padrão. Por outro lado, http://www.speedysoft.com/ e http://www.speedy-software.com/ são redirecionados para o host virtual correto, que deve ser o mesmo que http://www.speedysoftware. com/
Arquivo /etc/apache2/sites-available/000-default.conf
:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerAdmin [email protected]
DocumentRoot /var/www/general
<Directory /var/www/general>
Options +FollowSymLinks
Options -Indexes
AllowOverride All
Require all granted
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Arquivo /etc/apache2/sites-available/speedysoftware.conf
:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName www.speedysoftware.com
ServerAlias speedysoftware.com *.speedysoftware.com
ServerAlias speedy-software.com *.speedy-software.com
ServerAlias speedysoft.com *.speedysoft.com
# ... (more ServerAliases)
ServerAdmin [email protected]
DocumentRoot /var/www/speedysoftware
<Directory /var/www/speedysoftware>
Options +FollowSymLinks
Options -Indexes
AllowOverride All
Require all granted
</Directory>
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Você pode ver que http://www.speedy-soft.com/ é redirecionado para o host virtual padrão, e isso está correto. Qual é o problema com a configuração?
Depois que fiz as alterações, recarreguei as configurações por sudo systemctl restart apache2
.
Em relação ao redirecionamento, neste caso não quero redirecionar. Eu quero que eles sejam considerados sites separados, embora levem ao mesmo host virtual. Em outros casos, redireciono, por exemplo, redireciono http://www.speedypedia.org/ para http://www.speedypedia.info/ e redireciono http://ww.speedysoftware.com/ (ou qualquer outro subdomínio, incluindo http://speedysoftware.com/ ) para http://www.speedysoftware.com/ .
Atualização - eu verifiquei e http://ww.speedysoftware.com/ , http://wwww.speedysoftware.com/ e http://speedysoftware.com/ todos levam ao host virtual correto. Apenas http://www.speedysoftware.com/ não leva ao host virtual correto.
Escrevi para o Suporte da DigitalOcean (eles têm um ótimo suporte, por sinal) e eles me escreveram:
Eu corri
apachectl -S
a partir da linha de comando e descobri o problema:Como não defini
ServerName
em/etc/apache2/sites-available/000-default.conf
, o nome do droplet foi tirado, e esse era o problema. Então eu adicioneiServerName www.speedy-soft.com
a este arquivo:E reiniciei o Apache. Corri
apachectl -S
novamente:E agora tudo está funcionando.
Você pode ver mais detalhes nesta página: https://stackoverflow.com/questions/5474477/how-to-debug-an-apache-virtual-host-configuration