Je commence à apprendre Apache .htaccess
et j'ai des problèmes avec mon site web ...
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
RewriteCond %{HTTP_Host} ^example$ [NC,OR]
RewriteCond %{HTTP_Host} ^www.example.net$
RewriteCond %{REQUEST_URI} !myfolder-public/
RewriteRule (.*) /myfolder-public/$1 [L]
La seconde RewriteRule
existe parce que j'ai besoin d'un dossier différent (appelé myfolder-public
) pour rediriger mon domaine, mais lorsque je mets ceci sur un navigateur Web: example.com
sans HTTPS, la page est redirigée vers: example.net/https:/example.net
et je ne sais pas comment résoudre ce problème, aucune aide?
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI}
C'est probablement parce qu'il vous manque l'indicateur L
(Last
) de la directive de redirection. Il devrait lire:
RewriteRule .* https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
(En outre, inutile de capturer le motif(.*)
si vous n'utilisez pas de référence arrière dans le substitution.)
Sans l'indicateur L
, le traitement se poursuit dans le fichier et il semble qu'il soit éventuellement intercepté par votre réécriture ultérieure. Mais la directive précédente avait déjà défini le statut 3xx et finissait donc par réécrire l'URL, puis par la redirection.
Bien que je pense que quelque chose se soit perdu dans votre exemple, vous avez basculé entre les domaines .com
et .net
? Vous manquez le TLD de la première condition de votre réécriture et où est passé le /myfolder-public
dans la redirection erronée?