質問: サブフォルダー内のwordpress)を使用して、サイトで.htaccessを使用してhttpsを強制する .htaccessファイルを機能させてhttpsトラフィックを強制することができませんホスティングプロバイダーにftpで送信した場合に表示されるサイト構造:/ domains mydomainname.com public_html blog 私のサイトのファイルはpublic_html(index.htmlなど)で始まります wordpress blogにインストールしています wordpressの設定はhttpsに設定されています:(一般的な設定では、wordpress url)としてhttps://www.mydomainname.com/blogが記載されています)。 ドメインにアクセスするとssl証明書は正常に機能しています 当初、blogには.htaccessしかありませんでした。 #wordpressを始める rewriteengineオン rewritebase/blog / rewriterule ^ index.php $-[l] rewritecond%{request_filename}!-f rewritecond%{request_filename}!-d rewriterule。 /blog/index.php [l] #wordpressを終了 私が見るすべての種類のチュートリアルは、これを.htaccessの先頭に追加する必要があると述べています。rewriteengine on rewritecond %{server_port} 80 rewriterule ^(.*)$ https://www.mydomainname.com/$1 [r,l] ..そして私はこのファイルを「私のサイトのルートに」置くべきだと。(その他の).htaccessファイルがない場合: https://www.mydomainname.comに移動し、wpブログへのリンクをたどって、そこを閲覧できます。すべてhttps: http://www.mydomainname.comに移動し、wpブログへのリンクをたどると、これらはhttpsに変わります。 変更したhtaccessを複数の場所に配置すると、次のような問題が発生します(試行している.htaccessコンテンツ/場所によって異なります)。 www.mydomainname.comに移動すると、https://www.mydomainname.comにリダイレクトされ、「サーバーが見つかりません」というメッセージが表示されます。または: http:からhttps:への強制はありません。 質問: .htaccessをmydomainname.comまたはpublic_htmlに配置する必要がありますか(つまり、どのフォルダがその有名な「私のサイトのルート」であるか)?私は両方を試しました。 また blogに配置する必要がありますか?もしそうなら、それらは同一である必要がありますか? .htaccessファイルの適切な内容は何ですか? 私はあらゆる種類のバリエーションを試しましたが、それを機能させることができません-明らかにまだ正しいバリエーションではありません。fwiw:私のホスティングプロバイダーはapacheを使用していると思います。私はその構成を制御できません。
回答: 新しい.htaccessファイルをpublic_htmlフォルダーに配置する必要があると思います。.htaccessファイルでmod_rewriteを使用して following を試してくださいrewriteengine on # this will enable the rewrite capabilities rewritecond %{https} !=on # this checks to make sure the connection is not already https rewriterule ^/?(.*) https://%{server_name}/$1 [r,l] # this rule will redirect users from their original location, to the same location but using https. # i.e. http://www.example.com/foo/ to https://www.example.com/foo/ # the leading slash is made optional so that this will work either in httpd.conf or .htaccess context これらの3行alsoは、blogフォルダー内の.htaccessファイルに追加し、rewriteruleを次のように変更する必要があります。そのサブフォルダーを反映します。rewriterule ^/?(.*) https://%{server_name}/blog/$1 [r,l] mod_sslを適用して、 sslrequiressl ディレクティブでsslを強制することも役立つ場合があります。 このディレクティブは、現在の接続でhttp over ssl(つまり、https)が有効になっていない限り、アクセスを禁止します。これは、ssl対応の仮想ホストまたはディレクトリ内で、保護する必要のあるものを公開する構成エラーから防御するために非常に便利です。このディレクティブが存在する場合、sslを使用していないすべての要求が拒否されます。これだけではhttpsへのリダイレクトは行われないことに注意してください。