エックスサーバーで HSTS 設定をする手順。.htaccess の書き方と WordPress の注意

エックスサーバーで、.htaccess に 1 行を足して HSTS(Strict-Transport-Security)を設定できるようになります。困ったときの戻し方と、避けたほうがよい書き方も載せています。

更新 2026-10-29 SECUNOA(セキュノア)

この記事は 2026 年 10 月時点のエックスサーバー(レンタルサーバー)の公式マニュアルをもとに書いています。管理画面の表記は変わることがあります。

HSTS を設定する前に知っておくこと

HSTS(エイチエスティーエス)は、ブラウザに「このサイトは次回から必ず https:// で開く」と覚えさせる設定です。サイトの応答に Strict-Transport-Security というヘッダー(応答に添える付帯情報)を付けて働かせます。

2026 年 10 月時点のエックスサーバーの公式マニュアルでは、サーバーパネルに HSTS 専用の設定項目は見当たりませんでした。そのため、.htaccess編集 の機能で、.htaccess(サーバーの動きを指示する設定ファイル)に 1 行を書き足す方法で設定します。

先に常時 SSL 化を済ませる

HSTS は、サイトがすべて https:// で開けることが前提です。次の 2 つを先に確かめます。

  • SSL が有効になっている:サーバーパネルの「SSL設定」で、対象のドメインに独自 SSL(暗号化通信のための証明書)が設定されているか。
  • http:// から https:// に転送される:ブラウザで http:// から始まるアドレスを開き、https:// に切り替わるか。

エックスサーバーでは、SSL を有効にしただけでは http:// から https:// への転送は行われません。転送の設定は公式の Webサイトの常時SSL化 にあり、「ドメイン設定」の「HTTPSに転送する」にチェックを入れる方法と、.htaccess に転送の記述を足す方法が案内されています。WordPress の場合は、管理画面の「設定」→「一般」で「WordPress アドレス (URL)」と「サイトアドレス (URL)」が https:// になっているかも見ておきます。

ページの中に http:// のまま読み込んでいる画像などが残っていると、ブラウザに警告が出ることがあります。HSTS を付ける前に、主なページを https:// で開いて警告が出ないかを確かめておきます。

.htaccess に書く内容

書き足すのは次の 1 行です。最初は max-age(ブラウザが覚えておく秒数)を 300 秒(5 分)にします。

Header always set Strict-Transport-Security "max-age=300"
  • Header always set:応答にヘッダーを付ける Apache(ウェブサーバーのソフト)の書き方です。always を付けると、転送やエラーの応答にも付きます。詳しくは Apache の mod_headers の説明 にあります。
  • max-age=300:ブラウザが「https:// で開く」と覚えておく秒数です。

いきなり 1 年などの長い値にすると、https:// に不具合が見つかったときに、その間ずっと http:// に戻せなくなります。HSTS の事前登録を運営している hstspreload.org も、5 分、1 週間、1 か月と段階を踏んで上げ、各段階で表示の崩れがないかを確かめてから次へ進む方法を勧めています。

段階 書く値 意味
1 max-age=300 5 分
2 max-age=604800 1 週間
3 max-age=2592000 1 か月
4 max-age=31536000 1 年

MDN の Strict-Transport-Security の説明 にあるとおり、ブラウザは http:// の応答に付いた HSTS を無視し、https:// の応答に付いたものだけを覚えます。

includeSubDomains と preload は後回しにする

  • includeSubDomains:サブドメイン(shop.example.co.jp など)にも同じ指示を広げます。https:// で開けないサブドメインが 1 つでもあると、そこがブラウザで見られなくなります。社内用の管理画面や古いキャンペーンページも含めて、すべて https:// で開けると確かめてから付けます。
  • preload:ブラウザにあらかじめ組み込まれる一覧への登録を希望する印です。hstspreload.org には、一覧から外すのは簡単ではなく、外れたことが利用者に届くまで何か月もかかると書かれています。中小企業のサイトでは、付けなくても HSTS は働きます。

エックスサーバーで設定する手順

公式マニュアルの .htaccess編集 の手順に沿っています(新しいサーバーパネルの場合)。

  1. 「XServer アカウント」にログインし、サーバーパネルを開きます。
  2. 「.htaccess編集」を押します。
  3. 対象のドメインの行の右端にあるペンのアイコンを押します。
  4. 今書かれている内容を、手元のメモ帳などにすべて写して保存します。元に戻すときに使います。
  5. 下の「書く場所」を見て、上の 1 行を書き足します。
  6. 「設定する」を押します。

旧サーバーパネルでは、「.htaccess編集」のタブを開いて書き足し、「確認画面へ進む」→「実行する」の順で反映します。公式マニュアルは、心当たりのない記述でも不用意に消さないよう注意しています。編集できるのは、そのドメインの public_html の .htaccess です。

書く場所

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Header always set Strict-Transport-Security "max-age=300"

# BEGIN WordPress
(ここは触らない)
# END WordPress

上の 3 行は、.htaccess で常時 SSL 化している場合の公式の転送の記述です。HSTS の行はその下、# BEGIN WordPress より上に書きます。

WordPress を使っている場合、# BEGIN WordPress から # END WordPress の間は WordPress が自動で書き換えます。その中に書くと、設定の保存やプラグインの更新のときに消えることがあります。また、セキュリティ系や SSL 系のプラグインに HSTS を付ける機能があり、すでに使っている場合は、.htaccess にも書くと二重になります。どちらか一方にそろえます。

設定した後に確かめること

  1. トップページ、お問い合わせフォーム、WordPress の管理画面を https:// で開き、普段どおり表示されるか確かめます。
  2. ブラウザの開発者ツール(Chrome なら F12 キー)の「ネットワーク」タブでページを読み込み直し、応答のヘッダーに strict-transport-security: max-age=300 があるか確かめます。Mac のターミナルなどで curl -I https://example.co.jp/ と入力しても見られます。
  3. 問題がなければ、数日おきに max-age を 1 週間、1 か月、1 年と上げていきます。

表示がおかしくなったら、ステップ 4 で保存した元の内容に戻して「設定する」を押します。それでも http:// で開けないと困る場合は、max-age=0 を一度付けて https:// で開くと、ブラウザが覚えた指示を消せます。

無料診断で確かめられること

無料診断 の「常に暗号化通信にする指示(HSTS)」では、https:// のトップページ(同じサイト内の転送先を含む)の応答に Strict-Transport-Security が付いているかと、max-age の値を外から確かめます。max-age が 180 日(15552000 秒)未満のあいだは「確認推奨」と表示され、段階を上げて 1 年にすると「問題なし」になります。設定の前後に診断すれば、ヘッダーが外から見えるようになったかを確かめられます。結果の見方は セキュリティ診断の結果の見方 にあります。

よくある質問

エックスサーバーの管理画面に HSTS の設定項目はありますか。

2026 年 10 月時点の公式マニュアルでは、HSTS 専用の設定項目は見当たりませんでした。サーバーパネルの「.htaccess編集」で、.htaccess に 1 行を書き足す方法で設定します。

設定した後にサイトが表示されなくなったら、どうすればよいですか。

「.htaccess編集」で足した行を消して元に戻します。ブラウザはすでに受け取った HSTS を max-age の間覚えているので、短い値から始めておけば、戻した後の影響も短く済みます。

includeSubDomains と preload は付けたほうがよいですか。

最初は付けずに始めるのが穏当です。サブドメインに https:// で開けないものが 1 つでもあると、そこが見られなくなります。preload は外すのに何か月もかかるので、仕組みを分かったうえで最後に検討します。

自社のサイトで確かめる

ドメインを入れるだけで、この記事に出てきた項目が外からどう見えているかを無料で点検できます。設定は変えません。結果はその場で出ます。