it-swarm-ja.com

サブフォルダー内のWordpress)を使用して、サイトで.htaccessを使用してHTTPSを強制する

.htaccessファイルを機能させてHTTPSトラフィックを強制することができません

ホスティングプロバイダーにftpで送信した場合に表示されるサイト構造:

/
  domains
    mydomainname.com
      public_html
        blog
  • 私のサイトのファイルはpublic_htmlindex.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:への強制はありません。

質問:

  • .htaccessmydomainname.comまたはpublic_htmlに配置する必要がありますか(つまり、どのフォルダがその有名な「私のサイトのルート」であるか)?私は両方を試しました。
  • またblogに配置する必要がありますか?もしそうなら、それらは同一である必要がありますか?
  • .htaccessファイルの適切な内容は何ですか?

私はあらゆる種類のバリエーションを試しましたが、それを機能させることができません-明らかにまだ正しいバリエーションではありません。

FWIW:私のホスティングプロバイダーはApacheを使用していると思います。私はその構成を制御できません。

1
Jan Doggen

新しい.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へのリダイレクトは行われないことに注意してください。

2
wp78de

これは記事の要約です あなたのすべてのページにHTTPSを強制するWordPressサイト ブログ全体を安全にする方法を説明するWordPress HTTPS経由。

  1. 管理者にSSLを強制し、ページにサインインします
    WordPressディレクトリのルートにある_wp-config.php_ファイルに次の行を追加します。
    define('FORCE_SSL_ADMIN', true);

  2. 設定でhttpsを設定します
    WordPress管理者ダッシュボードで、_Settings -> General_に移動し、両方のURLを_https://_ではなく_http://_に変更します。
    enter image description here

  3. 。htaccessを更新
    WordPressアプリケーションのルートにある_.htaccess_ファイルに書き換えルールを追加します。

    _<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
        RewriteBase /
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
    </IfModule>
    _

現在のポートが443でない場合は、301リダイレクトでHTTPSを使用するようにURLを書き換えることを示す2行が追加されました。

_RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
_
  1. アプリケーションのすべてのキャッシュを空にします
0
harrymc