Redirecionamentos sujos no .htaccess

1

text / x-generic .htaccess (texto Unicode UTF-8)

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Uma das minhas ferramentas de otimização indica que eu tenho vários redirecionamentos para www (HTTP), que é HTTP para HTTPS e mais uma vez HTTPS PARA HTTPS. Como faço para corrigir isso?

    
por Netizen110 27.07.2018 / 21:40

2 respostas

1

...which is HTTP to HTTPS and once again HTTPS TO HTTPS

Especificamente, na sua captura de tela, você vê dois redirecionamentos ao solicitar HTTP e www (ou seja, http://www.example.com ):

  1. http://www.example.com to https://www.example.com (HTTP para HTTPS)
  2. https://www.example.com a https://example.com (www para não-www)

No.1 é acionado por sua regra .htaccess e no.2 é, sem dúvida, acionado pelo próprio WordPress em PHP.

Esta série de redirecionamentos é realmente necessária se você planeja implementar a HSTS ( apesar do que sua "ferramenta de otimização" está relatando).

Caso contrário, você pode evitar o redirecionamento duplo canonizando o nome do host em .htaccess , antes que o WordPress o faça. Uma maneira é adicionar uma regra adicional antes do seu redirecionamento HTTP para HTTPS existente. Por exemplo:

RewriteEngine On

# www to non-www (and HTTPS)
RewriteCond %{HTTP_HOST} ^www\.([a-z.]+?)\.?$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]   

# HTTP to HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

O %1 na RewriteRule substituição é uma referência anterior ao primeiro grupo capturado na última CondPattern . Em outras palavras, o nome do host menos qualquer prefixo www. (e qualquer ponto final, no caso de um FQDN).

Observe que o redirecionamento www para não www também redireciona para HTTPS. Portanto, isso garante que o seguinte HTTP para HTTPS nunca seja processado quando ocorrer o primeiro redirecionamento (portanto, nenhum segundo redirecionamento).

Certifique-se de limpar o cache do seu navegador antes do teste. (Para evitar problemas de cache, geralmente é preferível primeiro testar com 302 - redirecionamentos temporários.)

    
por 29.07.2018 / 02:26
0

Se eu entendi seu problema, você deve remover www de {HTTP_HOST}

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

deve ser alterado para o

RewriteCond %{HTTP_HOST} ^www\.([a-z.]+)$ [NC]<br>
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Espero que ajude você.

    
por 27.07.2018 / 21:53