Estoy tratando de configurar una configuración de servidor muy básica donde los dominios se sirven desde su propio directorio. Por ejemplo:
https://oblik.dev/foo.html > /var/www/oblik.dev/foo.htmlhttps://test.oblik.dev/foo.html > /var/www/test.oblik.dev/foo.html Habilité mod_vhost_alias y tengo un VirtualHost en /etc/apache2/sites-available/main.conf :
<VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/letsencrypt/live/oblik.dev/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/oblik.dev/privkey.pem UseCanonicalName Off VirtualDocumentRoot /var/www/$0 ServerAlias *.dev ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> Esta es la salida de apache2ctl -S :
VirtualHost configuration: *:443 46.101.237.154 (/etc/apache2/sites-enabled/main.conf:1) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www/html" Main ErrorLog: "/var/log/apache2/error.log" Mutex ssl-stapling: using_defaults Mutex ssl-cache: using_defaults Mutex default: dir="/var/run/apache2/" mechanism=default Mutex mpm-accept: using_defaults Mutex watchdog-callback: using_defaults Mutex ssl-stapling-refresh: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 Group: name="www-data" id=33 Y aquí está la salida de ls -al /var/www/ :
total 16 drwxr-xr-x 4 root root 4096 Mar 18 06:19 . drwxr-xr-x 14 root root 4096 Mar 17 06:54 .. drwxr-xr-x 2 www-data www-data 4096 Mar 17 09:30 ikarov.oblik.dev drwxr-xr-x 2 www-data www-data 4096 Mar 18 07:14 oblik.dev Tengo un index.php en ambos directorios con los mismos permisos que sus carpetas.
Cuando abro https://oblik.dev , obtengo un 404. Lo mismo para https://ikarov.oblik.dev . Sin embargo, si sustituyo VirtualDocumentRoot por un DocumentRoot normal, el servidor funciona como se esperaba.
Sé que Chrome maneja los dominios .dev de manera un poco diferente en el sentido de que aplica SSL , pero configuré un certificado SSL con dominios comodín a través de Let's Encrypt, por lo que no debería ser un problema.
¿Qué me estoy perdiendo?
El problema fue que Apache usa % para la interpolación de nombres en lugar de $ como Regex. Tuve que cambiar esto:
VirtualDocumentRoot /var/www/$0...a esto:
VirtualDocumentRoot /var/www/%0