WordPressでhttpとhttpsが両方開く理由と正しい直し方|UNIX Cafe

当サイトでは、コンテンツの一部に広告を掲載しています。
WordPressでhttpとhttpsが両方開く理由と正しい直し方|UNIX Cafe

UNIX Cafe | 第81回

目次

はじめに|「あれ?両方開く…」

カフェのカウンターで、
いつものようにブラウザを開きます。

WordPress をインストールして、
SSL を ON にしました。

管理画面も、URL も、
すべて https です。

……なのに。

http://example.com

を開いてみると、普通にページが表示されてしまう。

「あれ?」
「これ、問題ないのかな?」

今日は、そんな 小さくて大きな疑問 から始まるお話です。

結論を先に|これは Xserver の仕様です

先に結論を書いておきます。

これは、Xserver の仕様です。

Xserver の「WordPress簡単インストール」を使っても、

  • 独自SSLをON
  • WordPressのURLをhttpsに変更

それだけでは、
http → https のリダイレクトは設定されません。

つまり、

http と https が両方存在してしまう状態は、初期状態では正常なのです。

どうして両方存在してしまうのか

ここで、少しだけ仕組みの話をします。

独自SSLとは?

独自SSLをONにすると、

  • https でアクセスできる
  • 暗号化通信ができる

ようになります。

でも、これはあくまで

https が「使える」ようになるだけです。

リダイレクトとは別の話

http を https に自動で送り直す仕組み。

これが リダイレクト です。

Xserverでは、

  • SSLの有効化
  • http → https の転送

は、別の設定として扱われています。

よくある「やったのに直らない」状態

ここで、よくある流れを整理します。

  • SSLをONにした
  • WordPress一般設定を https にした
  • 管理画面も https
  • ブラウザで見ると https に見える

「直った気がする」

でも──

http://example.com

を直接開くと、そのまま表示される。

これは、「直った」のではなく
「https も使えるようになった」だけという状態です。

見た目では分からない理由

ブラウザは、とても親切です。

  • https を優先して表示
  • 過去の履歴を覚えている
  • 自動で切り替えてくれることもある

そのため、

ブラウザだけ見ていると
問題に気づきにくいという落とし穴があります。

本当に確認すべき方法|curl で見る

こういうときは、
少しだけ中身をのぞいてみましょう。

ターミナルでこのように打つと、いまどういう状況なのかが分かります。

curl -I http://example.com

結果の見方

❌ よくない状態

HTTP/1.1 200 OK

これは、http がそのまま処理されているという意味です。

⭕ 正しい状態

HTTP/1.1 301 Moved Permanently
Location: https://example.com/

これが、正しく https に転送されている状態です。

なぜ .htaccess を書いても効かないことがあるのか

ここで、少しだけ理由をたどってみます。

Xserver は、

  • nginx
  • Apache

の 2段構え で動いています。

構成によっては、

  • http の処理が nginx で終わり
  • Apache(.htaccess)に届かない

ことがあります。

特に、

  • サブディレクトリ構成
  • /wp/ 配下に WordPress

こうした場合、
「書いたはずなのに効かない」 が起きやすくなります。

正しい直し方①|XserverのHTTPS転送

まずは、Xserver側の設定です。

サーバーパネルで確認

  • ドメイン
  • SSL設定
  • HTTPS転送

ここが ON になっているかを確認します。

※ ただし、構成によっては
これだけでは効かない場合があります。

正しい直し方②|.htaccess で強制する(確実)

確実なのは、
http を物理的に通さない 方法です。

書く場所が重要

  • # BEGIN WordPress
  • # END WordPress

この 外側(上) に書きます。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

これで、

  • http は必ず
  • https に転送されます

サブディレクトリ構成の落とし穴

今回、とても重要だったポイントです。

WordPress が/wp/配下にある場合、

  • 直下の .htaccess
  • /wp/ の .htaccess

どこに書くかで結果が変わります。

「正しく書いているのに直らない」

その原因は、効く階層がズレていることがほとんどです。

もう一度、curl で確認する

設定が終わったら、もう一度確かめてみましょう。

curl -I http://example.com/wp/

ここで、

301 Moved Permanently

が返ってくれば、
ようやく 本当に直った 状態です。

まとめ|「直った気がする」と「正しい」は違う

  • SSLをONにした
  • 管理画面がhttpsになった

それだけでは、安心とは言えません。

大切なのは、

  • http が生きていないか
  • 正しく 301 されているか
  • 検索エンジンにどう見えるか

こうした一段奥の確認が、
後々の安心につながります。

黒い画面は、
怖い場所ではありません。

静かに真実を教えてくれる、
カフェの裏口のようなものです ☕

さらに学びたいあなたへ

📘 用途ごとに選ぶ Linux のおすすめ本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe 編集部

UNIX Cafe は、むずかしい言葉をできるだけ使わず、物語を読むような気持ちで気軽に学べる場所です。
プログラミングは、アイデアをコンピューターに伝えるための「ことば」。
簡単な単語と文法を覚えることで、誰でもターミナルから便利なコマンドを使えるようになります。
コーヒーを片手に立ち寄るような気持ちで、やさしいプログラミングの世界を、
そっとのぞいてみてください。

目次