Precisa redirecionar todos os não www para www e todos os https para subdomain

1

Tendo problemas ao escrever este composto, reescreva as seguintes regras:

Requisitos:

  • Redirecionar todo o link - > link
  • Redirecionar todos os https: // * - > link .
  • Impor todas as páginas / checkout / * para usar https:

E.G.

link - > link ou link - > link

O que eu fiz atualmente:

Atualmente tenho uma série de reescritas que reescreve o não-www para o www:

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

Isso é problemático porque, quando uma solicitação http para o URI: link é redirecionada para link .

Como eu alcançaria uma reescrita que satisfizesse meus requisitos?

    
por chrisjlee 24.04.2012 / 22:20

1 resposta

1

Não use HTTP_HOST:

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

Minha preferência é por isso:

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

Ou muito mais simples:

<VirtualHost *:80>  
ServerAlias example.com  
RedirectMatch permanent ^/(.*) http://www.example.com/$1  
</VirtualHost>

Exercício deixado para a leitura: encontre mais outras formas.

Para redirecionar https para http:

RewriteCond %{SERVER_PORT} !^80$  
RewriteRule ^/(.*) http://%{SERVER_NAME}/$1 [L,R]

Ou:

RewriteCond %{HTTP} off  
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
    
por 26.04.2012 / 19:41