Quero que um domínio no Apache exista puramente como um redirecionamento. Para esse fim, crio /etc/apache2/sites-available/redirect.example.info.conf
o seguinte:
<VirtualHost *:80>
ServerName redirect.example.info
ServerAdmin webmaster@localhost
Redirect / https://example.com/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Quando executo certbot --apache
, isso é reescrito para:
<VirtualHost *:80>
ServerName redirect.example.info
ServerAdmin webmaster@localhost
Redirect / https://example.com/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =redirect.example.info
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
E um novo arquivo /etc/apache2/sites-available/redirect.example.info-le-ssl.conf
é criado:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName redirect.example.info
ServerAdmin webmaster@localhost
Redirect / https://example.com/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/ca-webs.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ca-webs.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Isso funciona como desejado. Os redirecionamentos são executados http://redirect.example.info
→ https://redirect.example.info
→ https://example.com
. Mas não é óbvio para mim como está funcionando. O arquivo reescrito tem um Redirect
comando e um RewriteRule
comando, e eu pensei que o Redirect
(vindo primeiro) teria precedência. Como esse arquivo é realmente avaliado?