web-dev-qa-db-fra.com

Comment configurer htaccess pour rediriger un type de message ou un sous-répertoire particulier vers HTTPS?

J'ai un type de message avec le slug 'open-tour', donc toutes ses pages se trouvent sous www.domain.com/open-tour/. J'ai besoin de toutes les pages de ce "répertoire" pour accéder à HTTPS (pour les paiements par carte de crédit).

Je peux rediriger une seule URL, mais le dynamisme me dépasse un peu. C'est peut-être aussi parce que je ne sais pas comment/où écrire la redirection par rapport au bloc htaccess de Wordpress.

Quoi qu'il en soit, voici la dernière itération de mon code d'échec:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{http_Host} ^www.domain.com/open-tour/(.*) [nc]
RewriteRule ^(.*)$ https://www.domain.com/open-tour/$1 [r=301,nc] 

Quelqu'un peut-il me dire ce que je fais mal ici?

EDIT: Merci JMa et Pothi! Maintenant, y at-il un moyen de faire une autre règle qui est le contraire de cela? En d’autres termes, si l’utilisateur visualise une page qui ne figure pas dans le répertoire open-tour, redirigez-vous ensuite vers HTTP? J'ai essayé le code suivant, mais cela n'a pas fonctionné. Est-ce que "Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui ne sera jamais complète".

RewriteEngine On
RewriteBase / 
RewriteCond %{HTTPS} on 
RewriteRule !^open-tour/(.*) https://%{SERVER_NAME}/open-tour/$1 [R,L]

J'ai pensé qu'il serait simple d'ajouter le point d'exclamation, mais je suppose que non. Désolé, j’ai écrit ceci dans un commentaire ci-dessous, mais le format de fichier n’était pas très agréable Nice: P Tout cela n’est pas un problème, mais malheureusement, lorsque vous accédez à la page HTTPS et que vous vous rendez ailleurs sur le site, les clés HTTPS. J'ai un plug-in Constant Contact qui génère un avertissement pour tenter d'extraire des données non cryptées vers un protocole https crypté.

1
James

Essayez ceci à la place:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^open-tour/(.*) https://%{SERVER_NAME}/open-tour/$1 [R,L]
1
JMau

Pour laisser les autres pages à consulter uniquement sur HTTP, vous pouvez essayer ce code complet ...

RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} !=on
RewriteRule ^open-tour/?(.*) https://%{SERVER_NAME}/open-tour/$1 [R,L]

RewriteCond %{HTTPS} on
RewriteCond %{REWRITE_URI} !^open-tour
RewriteRule ^(.*) http://%{SERVER_NAME}/$1 [R,L]
2
Pothi Kalimuthu