2010-11-16 12 views
10

En primer lugar, me gustaría eliminar el www. de mi nombre de dominioEliminar www en todo el sitio, forzar https en ciertos directorios y http en el resto?

http://www.example.com =>http://example.com

También me gustaría que para ciertos directorios para ser seguro (https), mientras que el resto permanece http

http://example.com/login =>https://example.com/login

Evidentemente hay para trabajar para todas las condiciones, por ejemplo, si alguien teclea:

http://www.example.com/login =>https://example.com/login

También cuando las personas navegan fuera de la página de inicio de sesión, regresan a http. Actualmente en el .htaccess es la siguiente, que se realiza automáticamente por el software que estoy utilizando y supongo que tiene que estar allí para que funcione:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* ./index.php 

Alguna idea sobre cómo puedo lograr control del sueño todos estos ¿cosas?

¡Gracias de antemano!

===================

@Gumbo Siguiendo su consejo este es mi completa .htaccess

RewriteEngine On 


# remove www from host 
RewriteCond %{HTTP_HOST} ^www\.(.+) 
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+) 
RewriteRule^http%2://%3%{REQUEST_URI} [L,R=301] 

# force HTTPS 
RewriteCond %{HTTPS} =off 
RewriteRule ^(login)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

# force HTTP 
RewriteCond %{HTTPS} =on 
RewriteRule !^(login)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 


RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* ./index.php 


Options -Indexes 

Navegación a http://example/login todavía va a http://example/index.php cuando debería ir a https://example/login ¿Tengo el pedido equivocado?

+0

Um, '^ (login | foo | bar | ...) $' fue sólo un ejemplo que coincide con 'login',' foo', 'barra ', etc. – Gumbo

+0

Sí, lo veo, lo intenté con^(inicio de sesión) $ pero todavía muestra el mismo comportamiento – Anthony

Respuesta

21

Pruebe estas reglas:

# remove www from host 
RewriteCond %{HTTP_HOST} ^www\.(.+) 
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+) 
RewriteRule^http%2://%3%{REQUEST_URI} [L,R=301] 

# force HTTPS 
RewriteCond %{HTTPS} =off 
RewriteRule ^(login|foo|bar|…)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

# force HTTP 
RewriteCond %{HTTPS} =on 
RewriteRule !^(login|foo|bar|…)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

También puede ser que desee añadir algunas condiciones adicionales para cambiar solo el protocolo en las solicitudes GET y HEAD, pero no en las solicitudes POST.

+0

Guten Tag Gumbo! OK, creo que estamos llegando a algún lado. Con estas reglas como las anteriores, incluida la que originalmente estaba en .htaccess, eliminando el www. funciona en todos los casos. Sin embargo, navegando a http: // mydomain.com/login va a http: // mydomain/index.php – Anthony

+0

@Anthony: Como regla general, ponga aquellas reglas que causan un redireccionamiento externo frente a esas reglas que solo causan un reescritura interna. De lo contrario, puede obtener solicitudes redirigidas externamente que ya fueron reescritas internamente. – Gumbo

+0

He editado mi publicación original para darle una mejor idea de con qué estoy trabajando. – Anthony

0

www remove (probado):

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com$ [NC] 
RewriteRule ^(.*)$ http://yoursite.com/$1 [L,R=301] 

redirección (no probado):

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{THE_REQUEST} \/login/?.*\ HTTP [NC] 
RewriteRule ^(.*)$ https://yoursite.com/login [L,R=301] 
0

Después de leer esto, toda la línea de tiempo de la publicación obtengo éxito para el siguiente error: Mi sitio web (c4dprime.com) estaba adjunto https: en el navegador mozilla firefox. Google e Internet Explore muestran la dirección de dominio como http: (El problema real en firefox) No quería https: para mi dominio en cualquier navegador porque una redirección desconocida conectada con mi dominio por https: (Causa de este error) después de instalar siguiente complementos en wordpress, (redireccionamiento fácil para ssl) .... Le he dicho a todos que no use ningún plugin de bajo nivel para wordpress.

¡De todos modos! Después de leer muchos artículos y tutoriales sobre este tema a través del buscador de Google. Ahora me complace decir que he resuelto este problema de esta publicación. Recuerda una cosa sobre mí que soy nuevo en esta forma y wordpress.

Este consejo es ayudar completo para mí

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com$ [NC] 
RewriteRule ^(.*)$ http://yoursite.com/$1 [L,R=301] 

Después de editar o algunos cambios en mi archivo .htaccess siguientes código que tengo uso resuelto ahora con este error.

AddHandler c4d-prime .com 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteBase/
RewriteRule ^$ http://www.c4dprime.com/ [R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 
+0

Para cualquier informe/problema/sugerencia me puede contactar en [email protected] –

1

Este código funciona para mí:

<IfModule mod_rewrite.c> 

    RewriteEngine on 

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

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

</IfModule> 
Cuestiones relacionadas