2011-07-27 15 views
9

tengo una reescritura en mi archivo htaccess que elimina index.php de la urlayuda .htaccess, tenga que forzar WWW, https, y quitar index.php

RewriteEngine on 
RewriteCond $1 !^(images|media|system|themes|_css|_js|favicon\.ico|robots\.txt|cert\.html|index\.php) [NC] 
RewriteRule ^(.*)$ /index.php/$1 [L] 

Además de esto, yo quiero forzar www y https para cualquier solicitud que no tenga ninguno.

Por lo tanto, en última instancia, todas las direcciones URL deberían tener este aspecto: https://www.example.com/whatever/something/; y para fines de SEO, si una URL pierde la marca, se debe redirigir a 301 es la versión correcta, por ejemplo:

http://example.com/about/ 
301 redirect to 
https://www.example.com/about/ 

Me encantaría llevar a cabo un poco de ayuda que, gracias!

Respuesta

23

Fuerza WWW:

RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] # include 's' here to force ssl in addition to www 

Fuerza SSL:

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] 

Quitar "index.php":

RewriteCond %{THE_REQUEST} /index.php HTTP 
RewriteRule (.*)index.php$ /$1 [R=301,L] 
+1

Gracias, esto parece funcionar bastante bien hasta ahora. Si presiono https://domain.com/ en el navegador obtengo el error de no reconocimiento del certificado, porque el certificado es solo para www. ¿Hay alguna forma de evitar eso? – mjr

+5

@mjr Obtenga un certificado que cubra tanto 'domain.com' como' www.domain.com' .. o el certificado de comodín más caro (cubrirá TODOS los subdominios). Lamentablemente, el canal seguro (SSL) debe establecerse antes de que la parte HTTP de HTTPS pueda activarse. En otras palabras, la regla de reescritura no se ejecutará hasta que la conexión esté completamente establecida. – LazyOne

+0

Gracias por el consejo. – mjr

Cuestiones relacionadas