ohs httpd digitalocean apache http redirect https

apache - httpd - Redirigir HTTP a HTTPS en el host virtual predeterminado sin ServerName



ubuntu apache2 redirect http to https (3)

En mi servidor Apache, me gustaría poder redirigir todas las solicitudes HTTP entrantes a la solicitud https equivalente. El problema es que me gustaría poder hacer esto para mi host virtual predeterminado sin especificar ServerName y hacer que el redireccionamiento funcione con el nombre del servidor que aparezca en la url de la solicitud. Espero algo como esto:

NameVirtualHost *:80 <VirtualHost *:80> RedirectPermanent / https://%{SERVER_NAME}/ ... </VirtualHost>

¿Es posible usar Redirect o tendré que recurrir a Rewrite ?


Ambos funcionan bien. Pero de acuerdo con los documentos de Apache , debes evitar usar mod_rewrite para redirecciones simples, y usar Redirect lugar. Entonces, según ellos, lo mejor es que hagas:

<VirtualHost *:80> ServerName www.example.com Redirect / https://www.example.com/ </VirtualHost> <VirtualHost *:443> ServerName www.example.com # ... SSL configuration goes here </VirtualHost>

El primer / después de Redirect es la url, la segunda parte es donde debe ser redirigido.

También puede usarlo para redirigir las URL a un subdominio: Redirect /one/ http://one.example.com/


Esta es la forma completa de omitir los redireccionamientos innecesarios también;)

Estas reglas están destinadas a ser utilizadas en archivos .htaccess, ya que una RewriteRule en una entrada *: 80 VirtualHost no necesita condiciones.

RewriteEngine on RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]

Emplanaciones :

RewriteEngine on

==> activar el motor en absoluto

RewriteCond %{HTTPS} off [OR]

==> coincidencia en conexiones no https , o (no establecer [OR] causaría un AND implícito!)

RewriteCond %{HTTP:X-Forwarded-Proto} !https

==> coincidencia en las conexiones reenviadas (proxy, loadbalancer, etc.) sin https

RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R=301,L]

==> si una de las dos condiciones coincide, reescriba toda la URL, envíe un 301 para que el cliente lo "aprenda" (algunos lo hacen, otros no) y la L para la última regla.


Intenta agregar esto en tu configuración de vhost:

RewriteEngine On RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]