htaccess force https não funciona se não houver um URI
Nunca trabalhei com o Apache, então sou um novato.
Eu tenho uma conta de multihosting em um site de provedor, onde 3 domínios são usados. Quero forçar a conexão https em um domínio, digamos example.com, que não é o domínio principal do plano de hospedagem. O que fiz foi adicionar um .htaccessarquivo no path examplecom/public_html, a pasta onde estão todos os arquivos do site. No .htaccessCopiei e colei estas strings do guia do provedor:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]
O site funciona corretamente se eu acessar uma página com um URI não vazio, mas não funciona na página principal. Por exemplo: http://example.com/anypageé redirecionado corretamente para https://www.example.com/anypage, enquanto http://example.com/é redirecionado para https://www.example.com/public_htmle não consegue entender o porquê.
Respostas
Parece que há um conflito com as diretivas existentes, no entanto, você pode tentar alterar as diretivas existentes para ver se isso faz diferença:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com/$1 [L,R=301]
Desde que o .htaccessarquivo esteja localizado no examplecom/public_htmldiretório, a referência anterior capturada ( $1) deve conter apenas o que vier depois disso (se houver). Considerando que a REQUEST_URIvariável do servidor sempre contém o caminho URL completo.
A RewriteBasediretiva é supérflua aqui, pois você está usando um URL absoluto na RewriteRule substituição .
Você precisará limpar o cache do navegador antes de testar, pois o 301 incorreto provavelmente foi armazenado em cache. Teste com redirecionamentos 302 (temporários) para evitar problemas de cache.