web-dev-qa-db-ja.com

特定の投稿タイプまたはサブディレクトリをHTTPSにリダイレクトするようにhtaccessを設定する方法

スラッグ 'open-tour'の投稿タイプがあるので、すべてのページはwww.domain.com/open-tour/の下にあります。 HTTPSにアクセスするには、この「ディレクトリ」の下にあるすべてのページが必要です(クレジットカード決済用)

私は1つのURLを大丈夫にリダイレクトできますが、動的なものは私の頭の上に少し行きます。たぶんそれは私がWordpressのhtaccessブロックに関連してどのように/どこにリダイレクトを書くべきかわからないからでもあります。

とにかく、これが私の失敗コードの最新の繰り返しです。

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] 

誰かが私がここで間違っていることを私に言うことができますか?

編集:ありがとうJMaとPothi!さて、これと逆の規則をもう1つ作る方法はありますか?つまり、ユーザーがオープンツアーディレクトリにないページを表示している場合は、HTTPにリダイレクトしますか。次のコードを試しましたが、うまくいきませんでした。 「Firefoxは、サーバーがこのアドレスへの要求をリダイレクトしないことを検出しました。

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

私はそれが感嘆符を追加することの簡単な問題であろうと考えました、しかし私はそうではないと思います。申し訳ありませんが、以下のコメントでこれを書きましたが、あまりフォーマットされていませんでしたNice:Pこのこと自体は問題にならないでしょうが、残念ながらHTTPSページにアクセスしてサイトの他の場所に行くとHTTPSは固まります。暗号化されていないデータを暗号化されたhttpsプロトコルに引き込もうとすると警告が表示されるConstant Contactプラグインがあります。

1
James

代わりにこれを試してください:

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

他のページをHTTPでのみ表示するには、この完全なコードを試してください。

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