htaccess forza https non funziona se non c'è un URI
Non ho mai lavorato con Apache, quindi sono un principiante.
Ho un account multihosting su un sito Web di un provider, in cui vengono utilizzati 3 domini. Voglio forzare la connessione https su un dominio, diciamo example.com, che non è il dominio principale del piano di hosting. Quello che ho fatto è aggiungere un .htaccessfile nel percorso examplecom/public_html, la cartella dove sono presenti tutti i file del sito. Nel .htaccessho copiato queste stringhe dalla guida del provider:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]
Il sito web funziona correttamente se vado su una pagina con un URI non vuoto, ma non sulla pagina principale. Ad esempio: http://example.com/anypageviene reindirizzato correttamente a https://www.example.com/anypage, mentre http://example.com/viene reindirizzato a https://www.example.com/public_htmle non riesce a capire perché.
Risposte
Sembra che tu possa avere un conflitto con le direttive esistenti, tuttavia, puoi provare a cambiare le tue direttive esistenti per vedere se fa la differenza:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com/$1 [L,R=301]
Se il .htaccessfile si trova nella examplecom/public_htmldirectory, il backreference ( $1) acquisito dovrebbe contenere solo tutto ciò che viene dopo (se presente). Mentre la REQUEST_URIvariabile del server contiene sempre il percorso URL completo.
La RewriteBasedirettiva è superflua qui poiché stai utilizzando un URL assoluto nella RewriteRule sostituzione .
Sarà necessario svuotare la cache del browser prima di eseguire il test poiché è probabile che il 301 errato sia stato memorizzato nella cache. Prova con 302 reindirizzamenti (temporanei) per evitare problemi di memorizzazione nella cache.