2011-04-28 15 views

Respuesta

18
RewriteEngine On 

RewriteCond %{HTTPS} =off 
RewriteCond %{REQUEST_URI} !^\/page1\/ 
RewriteCond %{REQUEST_URI} !^\/page2\/ 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]  

RewriteCond %{HTTPS} =on 
RewriteCond %{REQUEST_URI} \/page1\/ [OR] 
RewriteCond %{REQUEST_URI} \/page2\/ 
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301] 

El primer conjunto de reglas va a redirigir todas las páginas no se accede a través de HTTPS, y que no son /page1/ o /page2/ a la misma URL pero https://. El segundo conjunto de reglas se asegurará de que /page1/ y /page2/ sean redirigidos de nuevo a http:// si se accede a ellos a través del https://.

+0

Falta algo. No se olvide de agregar el signo de dólar '$' si desea que la coincidencia sea exacta o de lo contrario la regla coincidirá tan pronto como '/ page1 /' se encuentre en cualquier parte de la URL. eso podría no ser lo que quieres. La página que intentaba tener solo en http era '/'. no funcionó bien sin '$'. 'RewriteCond% {REQUEST_URI}^\/$' – lano1106

+0

Parece que debería cambiar a 'RewriteRule (. *) Https: //% {HTTP_HOST} $ 1 [L, R = 301]', de lo contrario se redirigirá a https: // example.org// (barras diagonales dobles) – Sutra

5

Una solución más sencilla:

RedirectMatch ^((?!\/(page1|page2)).*)$ https://%{HTTP_HOST}$1 

Esto redireccionará todo excepto la Página 1 y página 2 a https de la máquina actual.

+0

Para mí esto es suficiente, pero esto no impedirá que pueda acceder a la página a través de https. Con esta línea, solo se puede acceder con http y https. – rwx

+0

Por lo que entendí que esa no era la pregunta original, ¿tal vez su caso de uso sea diferente? – klodoma

Cuestiones relacionadas