web-dev-qa-db-de.com

Wie richte ich htaccess ein, um einen bestimmten Beitragstyp oder ein bestimmtes Unterverzeichnis zu HTTPS umzuleiten?

Ich habe einen Beitragstyp mit dem Slug "Open-Tour", daher befinden sich alle Seiten unter www.domain.com/open-tour/. Ich benötige alle Seiten in diesem "Verzeichnis", um zu HTTPS (für Kreditkartenzahlungen) zu gelangen.

Ich kann eine einzelne URL umleiten, aber das dynamische Zeug geht mir ein bisschen über den Kopf. Vielleicht liegt es auch daran, dass ich nicht weiß, wie/wo ich die Weiterleitung in Bezug auf den htaccess-Block von Wordpress schreiben soll.

Jedenfalls ist hier die neueste Iteration meines Fehlercodes:

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] 

Kann mir jemand sagen, was ich hier falsch mache?

EDIT: Danke JMa und Pothi! Gibt es eine Möglichkeit, eine andere Regel zu erstellen, die umgekehrt ist? Das heißt, wenn der Benutzer eine Seite anzeigt, die sich NICHT im Open-Tour-Verzeichnis befindet, dann auf HTTP umleiten? Ich habe den folgenden Code ausprobiert, aber es hat nicht funktioniert. "Firefox hat festgestellt, dass der Server die Anforderung für diese Adresse auf eine Weise umleitet, die niemals abgeschlossen wird."

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

Ich dachte, es wäre eine einfache Sache, das Ausrufezeichen hinzuzufügen, aber ich denke nicht. Entschuldigung, ich habe dies in einem Kommentar unten geschrieben, aber es war nicht sehr schön formatiert: P Das Ganze wäre kein Problem, aber leider bleiben die HTTPS-Sticks an anderer Stelle auf der Website, sobald Sie zur HTTPS-Seite gelangen. Ich habe ein Constant Contact-Plugin, das eine Warnung anzeigt, wenn versucht wird, unverschlüsselte Daten in ein verschlüsseltes https-Protokoll zu übertragen.

1
James

Versuchen Sie dies stattdessen:

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

Damit andere Seiten nur über HTTP angezeigt werden, können Sie diesen vollständigen Code verwenden ...

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