J'ai installé un certificat ssl sur mon site, lorsque j'entre une URL avec "https", il se charge comme il se doit, mais quand j'entre une URL avec seulement "http" comme " http://example.org/menu ", il me redirige vers " https://example.org/index.html " et je ne sais pas pourquoi. C'est ce que contient mon htaccess
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^imgs$ imgs [NC,L,QSA]
RewriteRule ^static$ static [NC,L,QSA]
RewriteRule ^test$ index.html [NC,L,QSA]
RewriteRule ^login$ index.html [NC,L,QSA]
RewriteRule ^menu$ index.html [NC,L,QSA]
RewriteCond %{HTTPS} on!
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Toutes les règles disent index.html parce que c'est un SPA, avant d'installer de ssl et d'ajouter les deux dernières lignes, cela fonctionnait sans problème, mais maintenant chaque URL que j'entre avec http redirige vers " https://example.org/index .html "
Le problème est que la redirection se produit après la réécriture de l'URL. Vos redirections doivent être antérieures à vos réécritures. De plus, les deux premières conditions ne sont appliquées qu'à la première règle, elles ne sont pas appliquées globalement. Vous voulez probablement quelque chose du genre:
Options +FollowSymLinks -MultiViews
RewriteEngine On
# Redirect first, then apply any rewrites after the browser loads the new URL
RewriteCond %{HTTPS} on!
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# If any request is for an existing resource, stop the rewriting immediately
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^imgs$ imgs [NC,L,QSA]
RewriteRule ^static$ static [NC,L,QSA]
RewriteRule ^test$ index.html [NC,L,QSA]
RewriteRule ^login$ index.html [NC,L,QSA]
RewriteRule ^menu$ index.html [NC,L,QSA]
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots