2012-03-09 35 views
6

Tengo un problema donde tengo que redirigir 4 páginas específicas en mi sitio web a sus versiones seguras de https.htaccess redirigir 4 páginas específicas a https

Actualmente tengo un archivo .htaccess que está redirigiendo tanto example.com y www.example.com a https://example.com

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://example.com/$1 [R] 

lo que necesito es algo así como

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page1.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page2.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page3.php$ [NC] 
RewriteCond %{HTTP_HOST} ^(.*\.)*example.com/page4.php$ [NC] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule ^(.*)$ https://example.com/page1.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page2.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page3.php$1 [R] 
RewriteRule ^(.*)$ https://example.com/page4.php$1 [R] 

Tenga en cuenta que he quitado la tercera línea RewriteCond de la encima del código, ya que no quiero que todas las páginas de mi sitio muestren https solo en las páginas que especifico.

¿Cómo puedo resolver este problema?

PS también, ¿cubre esta línea tanto www.example.com como example.com?

RewriteCond %{HTTP_HOST} ^(.*\.)*example.com$ [NC] 

Estoy asumiendo que

^(.*\.)* 

tiene algo hacer con él?

Respuesta

11
Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/

#redirect www.mydomain.com to mydomain.com (or any other subdomain) 
RewriteCond %{HTTP_HOST} !^mydomain.com$ [NC] 
RewriteRule ^(.*)$ http://mydomain.com/$1 [L,R=301] 

#force https for certain pages  
RewriteCond %{HTTPS} !=on 
RewriteRule ^(page1\.php|page2\.php|page3\.php|page4\.php)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R] 
+0

¡Muchas gracias, Gerben, funciona perfectamente! –

4

He modificado y limpiado su código. Se puede utilizar este código en su archivo .htaccess en $ DOCUMENT_ROOT:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# HTTPS is not already on 
RewriteCond %{HTTPS} !=on 
# Redirect to HTTPS is URI is page1.php OR page2.php OR page3.php OR page4.php 
RewriteRule ^page[1234]\.php$ https://mydomain.com%{REQUEST_URI} [L,R] 
+0

Gracias por su respuesta anubhava, no he probado su respuesta, pero parece que funcionaría ti. La única razón por la que no intenté la suya primero es porque parece que está utilizando algún tipo de arreglo para la página1.php, page2.php, etc. El problema con esta forma de hacerlo es que no pude insertar individualmente nombres de página, por ejemplo, mis páginas realmente no se llamaban página1, página2, etc. Simplemente las estaba usando para simplificar. Y lamentablemente no sé lo suficiente sobre la reescritura para cambiarlo. De todos modos, gracias de nuevo por su respuesta. –

+1

'[1234]' no era una matriz, sino una expresión regular para decir uno de los 1 o 2 o 3 o 4. Habría usado: 'RewriteRule^(page1 | page2 | page3 | page4) \. Php $ https: //% {HTTP_HOST}% {REQUEST_URI} [L, R] 'De todos modos, creo que aceptaste la respuesta correcta, ya que @Gerben respondió primero y contestó a la derecha :) – anubhava

Cuestiones relacionadas