apache .htaccess zend-framework2 centos httpd.conf

Apache: ¿cómo hacer que las solicitudes http solo entren en https?



.htaccess zend-framework2 (3)

Esta pregunta ya tiene una respuesta aquí:

¿Cómo saber si el usuario usa http://ttt.com o http://www.ttt.com , lo redirige a https://www.ttt.com ?

httpd.conf:

<VirtualHost *:80> ServerName www.ttt.com ServerAlias ttt.com DocumentRoot /home/www/html/ttt/public <Directory /home/www/html/ttt/public> #Options ExecCGI #AddDefaultCharset utf-8 DirectoryIndex index.php AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>

.htaccess:

RewriteEngine On ############################################ ## always send 404 on missing files in these folders #RewriteCond %{REQUEST_URI} !^/(files)/ RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]


Aquí tienes: https://wiki.apache.org/httpd/RedirectSSL

Redirigir solicitud a SSL

Digamos que quiere que http://www.example.com/secure/ siempre se envíe a través de SSL (supongo que tanto el vhost normal como el SSL tienen el mismo contenido). Podrías hacer esto al enlazar a la página correcta desde dentro de tus páginas HTML ... pero siempre habrá algún usuario que se cuele de esa manera.

Usando hosts virtuales (usando redirección)

Al usar SSL, con frecuencia tendrá al menos dos hosts virtuales: uno en el puerto 80 para atender solicitudes comunes y otro en el puerto 443 para servir SSL. Si desea redirigir a los usuarios del sitio no seguro al sitio SSL, puede usar una directiva de redirección normal dentro de VirtualHost no seguro:

NameVirtualHost *:80 <VirtualHost *:80> ServerName mysite.example.com DocumentRoot /usr/local/apache2/htdocs Redirect permanent /secure https://mysite.example.com/secure </VirtualHost> <VirtualHost _default_:443> ServerName mysite.example.com DocumentRoot /usr/local/apache2/htdocs SSLEngine On # etc... </VirtualHost>

Cuando redirecciona todo, ni siquiera necesita un DocumentRoot:

NameVirtualHost *:80 <VirtualHost *:80> ServerName www.example.com Redirect permanent / https://secure.example.com/ </VirtualHost> <VirtualHost _default_:443> ServerName secure.example.com DocumentRoot /usr/local/apache2/htdocs SSLEngine On # etc... </VirtualHost>

Nota : el redireccionamiento también se puede usar dentro de archivos .htaccess o para dirigirse a direcciones URL particulares, como en:

Ejemplo:

Redirigir permanente / inicio de sesión https://mysite.example.com/login

Usando mod_rewrite

Si bien se recomienda la solución porque es más simple y segura, también puede usar mod_rewrite para obtener el mismo efecto que se describe aquí: RewriteHTTPToHTTPS

Desde https://httpd.apache.org/docs/trunk/mod/mod_alias.html#redirect :

# Redirect to a URL on a different host Redirect "/service" "http://foo2.example.com/service" # Redirect to a URL on the same host Redirect "/one" "/two"

Si el cliente solicita http://example.com/service/foo.txt , se le indicará que acceda a http://foo2.example.com/service/foo.txt en su lugar. Esto incluye solicitudes con parámetros GET, como http://example.com/service/foo.pl?q=23&a=42 , y se redirigirá a http://foo2.example.com/service/foo.pl. q = 23 y a = 42 . Tenga en cuenta que los POST se descartarán. Solo se complementan los segmentos de ruta completos, por lo que el ejemplo anterior no coincide con una solicitud de http://example.com/servicefoo.txt . Para una concordancia más compleja usando la sintaxis de expresión, omita el argumento ruta URL como se describe a continuación. Alternativamente, para emparejar usando expresiones regulares, vea la directiva RedirectMatch .

Si desea redirigir tanto el sitio www.example.com/* como el example.com/* , puede crear dos VirtualHost con diferentes ServerName o puede usar el complemento Rewrite.


Puede hacerlo desde httpd.conf con lo siguiente:

<VirtualHost *:80> ServerName www.ttt.com Redirect "/" "https://www.ttt.com/" </VirtualHost> <VirtualHost *:443> ServerName www.ttt.com ... ... </VirtualHost>

O desde el archivo .htaccess:

RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]


Pruebe el siguiente código en el archivo principal .htaccess:

DirectoryIndex index.php RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]