RewriteCond %{HTTPS} off RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301]
Você precisa incluir o sinalizador L
( last
) nas duas diretrizes RewriteRule
, caso contrário, o processamento continuará no arquivo e o URL será reescrito novamente pelo RewriteRule
que segue (usando a saída da directiva anterior). E como um redirecionamento externo já foi acionado pelas diretivas anteriores, você é redirecionado para o /utilities/template_handler.php?filename=....
, em vez de reescrito internamente.
Essas diretivas também devem ser revertidas para evitar um redirecionamento duplo desnecessário ao solicitar uma URL no formato http://example.com/...
. (Particularmente com a adição do L
flag.)
Por exemplo:
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Observe também que removi o sinalizador NC
da condição !^www\.
negada. Como esta é uma regex negada , você deseja redirecionar quando não iniciar www
- todas em minúsculas. Você ainda deseja que as solicitações "inválidas" do formulário WwW
sejam redirecionadas, mas se você incluir o sinal NC
aqui, elas não serão.
Você pode incluir o L
flag no último RewriteRule
, se desejar - embora seja uma boa prática fazê-lo. Está efetivamente implícito, já que é a última regra, mas se você adicionou mais diretivas, pode ser necessário lembrar de adicioná-la.