ワードプレスでwww統合とhttps 301リダイレクトで移行させる.htaccessファイル書き方と設置場所についてです。

.htaccessファイルの中身のコードについては httpからhttpsへ移行する時のペラページ用htacess覚書 に詳しく書いたのですが、ワードプレスにはワードプレスに独特なものがあるのでワードプレスについても( ..)φメモしておくことにしました。

ワードプレスの「.htaccess」設置場所

ワードプレスの場合は自分で.htaccessファイルをつくるのではなく、ワードプレスを導入した時にワードプレスが作った.htaccessファイルを使う点が一番の特徴です。
WPのhtaccessファイル設置場所
ロリポップではFTPを使ってそのファイルを開き、その場で書き込むことが出来ますが、一般にはFFFTPなどのftpソフトでPCにダウンロードして保存し、改変して差し替えることになります。

もともとの.htaccessファイルが手元にあれば、元に戻せるので、万が一を考えれば原本を保存しておくほうが安心ですよね。

なので、一旦、自分のパソコンにダウンロードして原本を保存してから、改変バージョンの作成をお勧めします。
ワードプレスのhtraccessファイル中身

httpsURLへの301リダイレクト用コード

.htaccessの中身は httpからhttpsへ移行する時のペラページ用htacess に書いたものとほぼ同じですが、上下を<ifmodule mod_rewrite.c>~~~~</ifmodule>で挟み、元々のワードプレスのリライト指示の上に書き足すところが違います。


<ifmodule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</ifmodule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
~~~~~~
(中略)
~~~~~~~~
# END WordPress

.htaccessの中身は

RewriteEngine On
以下のようにリライトしてください、という指示をだしています。
RewriteCond
適用する条件が書かれています。
「%{HTTPS} off」は「httpsではない場合」という意味です。
RewriteRule
リライトルールが書かれています。
ここでは「ある文字を、記述したURLにリダイレクトする」という意味になります。

^(.*)$
このワンセットで、入力された任意の文字という感じです。
「^」は正規表現の行頭という意味。
「(.*)」は0文字以上の任意の文字・桁数に制限なし
「$」が正規表現の行末という意味。
この場合は入力されたURLアドレスを表しています。
%{HTTP_HOST}
閲覧中のサイトのドメイン
%{REQUEST_URI}
リクエストのあったURI(ドメイン内の下部のページURI等全部含む)
[R=301,L]
Rは「リダイレクト」で301がリダイレクトの種類になります。
Lは、適用した「RewriteRule」ルールがここで終了しますという意味です。

www統合しhttpsへ301リダイレクトするコード

ワードプレスでもwww表記を統一していないサイトだと、SSL化しても2つともがそのまま残っているのはHTMLサイトなどと同じです、
同じサイトのwwwあるなしURLが重複している
wwwのあるものと無いアドレスが並行している場合、ワードプレスでも.htaccessファイルでwww表記を統合・httpsサイトへ移行させることができます。

中身はhttpからhttpsへ移行する時のペラページ用htacess覚書 に書いたものと同じですが、上下に<ifmodule mod_rewrite.c>~~~~</ifmodule>を付け加え、元のワードプレスの記述の上の書き加えます。


<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule (.*) https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</ifmodule>

#BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
~~~~~~
(中略)
~~~~~~~~
# END WordPress

それぞれの意味は以下のようなものです。

RewriteEngine On
以下のようにリライトしてください、という指示をだしています。
2つリライトするときも、指示はここ一回だけでOKです
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
適用する条件が書かれています。
%{HTTP_HOST} ^www\.(.*)$ [NC]で、http:// WWW.●●●という条件のとき、という意味になります。
%{HTTP_HOST}
閲覧中のサイトのドメイン
^
「^」は正規表現のがここ始まるという行頭の意味
www ¥.
¥もしくは(\)はhttp://www.〇〇〇~~の中の”.”が正規表現の「任意の一文字」という意味ではなく”www.”だと認識させるためにつかう「エスケープ文字」というものなので
”www ¥.”と書くことで ⇒”www.”という意味になります。
[NC]
大文字・小文字の区別をしないという意味。
なので大文字だけの「WWW.」でも大文字と小文字が混在の「Www.」でも、小文字だけの「www.」でも、全てにあてはまりまるようになっています。
$
$は正規表現がここで終わる、という意味。
こに場合はwww.〇〇〇~~の部分に相当します。
(.*)
「(.*)」は0文字以上の任意の文字・桁数に制限なしで、この場合は入力した文字・URL
https://%1/$1
https以下はwwwが無いURIにリダイレクトということになるそうです。

コマンドとか正規表現あまり詳しくないのですが、調べた結果から推測するに
%1は”(.*)”を代行して表していて、入力されたURLのことになります。
$1は部分置換として、変えない部分を指すので、
ドメイン以下の各ページなどは変える必要がないので、こう書かれているのかな?と考えました。

[R=301,L]
Rは「リダイレクト」で301がリダイレクトの種類になります。
Lは、適用した「RewriteRule」ルールがここで終了しますという意味です。
RewriteCond %{HTTPS} !on
「%{HTTPS} !onは!が否定を表しますので、「httpsでアクセスされていない時」という意味です。

二つ併用するときは、よく見るoff ではなく!on なのは、このほうが間違えにくいということでしょうか?意図がわたくしはわかりませんので、そのまま記載させてもらっています。

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
リライトルールが書かれています。
ここでは「ある文字を、記述したURLにリダイレクトする」という意味になります。
(.*)
(.*)は0文字以上の任意の文字・桁数に制限なし

この場合はhttpのままのURLになります。

%{HTTP_HOST}

閲覧中のサイトのドメイン

%{REQUEST_URI}
リクエストのあったURI(ドメイン内の下部のページURI等全部含む)
任意の文字を現在リクエスト中のホスト名(%{HTTP_HOST)とページ名(%{REQUEST_URI})にhttps://を付けたURIにリライト。
[R=301,L]
Rは「リダイレクト」で301がリダイレクトの種類になります。
Lは、適用した「RewriteRule」ルールがここで終了しますという意味です。

追記・Xserver・日本語ドメインなど

Xserver用のwwwとの統合用のコード

Xserverでは 上に書いた wwwとの統合用のコード では505エラーになりました。

他サーバーでも同様のことがあるかもしれませんので、Xserverで正常に作動したコードを載せておきます↓↓↓↓


<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</ifmodule>

#BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
~~~~~~
(中略)
~~~~~~~~
# END WordPress

wwwを統合してリライトするコードの$1%{REQUEST_URI}に変えただけ ですが、これで正常に移行しました。

日本語ドメインについて

また日本語ドメインの場合は最初からwww付きのURLというのはないらしいことも、今回初めて思い知りました。SSL化とかがなければきっと死ぬまで知らなかっただろうと思います。
日本語ドメインにはwwwつきURLは存在しない
日本語ドメインでサイトを作っている場合はwwwとの統合指示は不要ということですね(..)

なを基本的な通常のHTMLサイト・ペラサイトの場合は設置場所などに若干の違いがありあますので、別ページにしてあります。HTMLサイトでの設置場所・コードについて知りたい方はこちら のページを見ていただければと思いますm(__)m

正規表現についてなど参考にさせていただいたサイトはWIKIをはじめ沢山あるのですが、主にお世話になったのは以下2サイト様の記事になります。ありがとうございました。

参照
http正規化でよく見る.htaccessファイルのmod_rewriteの見方について

.htaccessでhttps化かつwwwなしに統一するクールな方法

スポンサードリンク

スポンサードリンク