Configuré un nuevo host virtual para un nuevo sitio en mi servidor, pero funciona de manera extraña a pesar de tener exactamente la misma configuración que mi sitio original.
Quiero que todas las solicitudes sean redirigidas a HTTPS, en pocas palabras. En mi sitio principal (el que funciona) tengo esto especificado en la VirtualHost
configuración, y .htaccess
tengo una regla adicional especificada para permitir URL cortas. Específicamente, el problema en el sitio que no funciona es que si intento ir a example.com/url
, la redirección va a https://example.comurl
y elimina lo necesario /
de la URL.
Copié la configuración exacta al archivo nuevo VirtualHost
desde .htaccess
el sitio de trabajo, así que no estoy seguro de por qué no funciona en el nuevo. Todos mis registros DNS para ambos sitios usan registros A para señalarlos, no hay redireccionamientos ni sucede nada a nivel de DNS. Intenté poner un /
al final de las Redirect
líneas en el código siguiente, pero el problema no se resolvió. El servidor es Ubuntu 14.04 y Apache es la versión 2.4.7. Ambos sitios son nombres de dominio separados con .conf
archivos utilizados separados, pero están alojados en el mismo servidor con la misma dirección IP. ¿Como puedo solucionar este problema?
El código relevante en VirtualHost
:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com
</VirtualHost>
Y en .htaccess
:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L]
En caso de que ayude/importe, esta es la configuración SSL en mi archivo VirtualHost, aunque está colocada al principio del archivo fuera de todas las demás directivas:
SSLCipherSuite AES128+EECDH:AES128+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubdo$
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
Y esta es la configuración específica para el VirtualHost
sitio:
<VirtualHost *:443>
ServerName example.com
ServerAdmin [email protected]
DocumentRoot /var/www/example
ErrorLog ${APACHE_LOG_DIR}/errorexample.log
Options -Indexes
SSLEngine on
SSLCertificateFile /etc/ssl/example/examplecert.crt
SSLCertificateKeyFile /etc/ssl/example/examplekey.key
SSLCertificateChainFile /etc/ssl/chain/class1.pem
</VirtualHost>
Respuesta1
Para redirigir a HTTPS:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Pero necesitas tener un host virtual para SSL:
NameVirtualHost *:443
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>
NOTA:tienes que crear un certificado SSL... pero haygran tutorial¡para esto!