HTTPS redireciona em htaccess somente quando um parâmetro de consulta não é igual a algo

1

Plano de fundo

Consegui fazer com que o redirecionamento http para https funcionasse para minha instalação do Wordpress incluindo esse snippet no meu arquivo .htaccess :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Estou executando no ambiente do Google Cloud e o problema é que a verificação de integridade exige que o "recurso de verificação de integridade" retorne 200 OK . A verificação de integridade emite uma solicitação HTTP sem o conjunto de cabeçalhos X-Forwarded-Proto , para que o Apache responda com um 301 e, portanto, a verificação de integridade falhe (ela não segue os redirecionamentos). Infelizmente, não é possível definir cabeçalhos no Google Health Checker, por isso não posso falsificar o cabeçalho X-Forwarded-Proto para "https". Portanto, minha esperança para uma solução alternativa seria fornecer um parâmetro de consulta no caminho de verificação de integridade e configurar o arquivo .htaccess para SOMENTE redirecionar se o parâmetro de consulta especificado for indefinido (ou igual a falso ou algo semelhante).

Pergunta

Como posso modificar o RewriteCond (presumo) para executar somente o redirecionamento se o X-Forwarded-Proto header não for igual a https (como no exemplo acima) AND a string de consulta não não contém o parâmetro healthCheck=true ?

    
por Johan 10.12.2015 / 19:01

1 resposta

1

Você pode tentar com isso?

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{QUERY_STRING} !.*healthCheck=true.*
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Dê uma olhada no link e < a href="https://wiki.apache.org/httpd/RewriteQueryString"> link .

    
por 10.12.2015 / 22:09