Force HTTPS sur certaines URLs et force HTTP pour toutes les autres
J'ai le projet d'un client où j'ai besoin de forcer le HTTPS pour un certain dossier et force HTTP pour toutes les autres. Je peux réussi à appliquer le protocole HTTPS pour le dossier j'ai le désir, mais tous les liens de retour vers le reste du site à la fin via le protocole HTTPS. J'aimerais avoir une règle qui oblige les demandes rien de " pas " dans le dossier sécurisé à être forcé de retourner à HTTP. Voici ce que j'ai à ce jour:
RewriteEngine On
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{HTTPS} !=on
RewriteRule ^(my) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1
"mon" est le nom du dossier que j'ai besoin de forcer le HTTPS pour.
Des idées?
Mise à jour: j'ai aussi essayé:
RewriteEngine On
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
# Force HTTPS for /my
RewriteCond %{HTTPS} !=on
RewriteRule ^(my) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]
# Force HTTP for anything which isn't /my
RewriteCond %{HTTPS} =on
RewriteRule !^my http://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]
# Remove index.php from URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1
Mais au lieu de demandes d' /ma forcé à travers HTTPS ils maintenant juste résoudre à http://www.example.com/index.php/my
😕
Vous devez vous connecter pour publier un commentaire.
Ah, bien sûr. Le problème réside dans le fait que votre jeu de règles de réécriture sera retraité après il est transformé à
index.php
la suite de la première redirection. En utilisant ce que vous avez actuellement, vous devez en outre condition les redirections pour être sûr de ne pas avoir été appliqués lors de la réécriture de/index.php/my
.Quelque chose comme ce qui suit devrait faire:
Donner la suite à un essai, qui devrait fonctionner pour vous:
C'est quelque chose qui fonctionne à partir d'un vieux site internet du client, et pourrait être adaptable à vos besoins:
Remplacement de panier avec mon peut-être
Simplement inverser les conditions:
httpd.conf
(ou similaires) et tout le monde pensa que c'était dans.htaccess
, dans ce cas, vous devez vous assurer que tous les motifs de test match^/
, par exemple^/my
(j'ai peut-être mal, c'était juste une pensée)