WordPressでリダイレクト:『.htaccess』の書き方まとめ
『.htaccess』は変更する頻度が少ないので、変更する時に勉強して把握しても、一度変更してしまえばそれでおしまい!となって、次また変更するとなった時は、すっかり忘れてて一から勉強しなおし〜〜〜。なんてことが、ここ何回続いてるでしょうか。。
そうならないために『301リダイレクトでサイトのリニューアル(ドメインを変更)する!』や『[http] から [https] へ。常時SSL化対応』『URLの正規化:wwwあり、なしのドメインを統一する記述方法』といった記事にまとめてはいるのですが、それすら忘れてしまってて。。
ってことで、今回は以前書いた記事をより簡単にまとめて、『.htaccess』の書き方・ルールを書きたいと思います。
[www]はなし・[http]→[https]へリダイレクト(統一)する
wwwなしで統一する記述は3,4行目に、常時SSL化対応のための[http]から[https]へ統一する記述は6,7行目に定義したものが、以下の記述になります。
そのサイトのみに使える記述
RewriteEngine on RewriteCond %{HTTP_HOST} ^https://www.webdesign-abc\.com RewriteRule ^(.*)$ https://webdesign-abc.com/$1 [R=301,L] RewriteCond %{HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
今までは『https://webdesign-abc.com』とアドレスを記述していたので、『Webデザイン ABC』のみにしかこの記述は使えませんでした。
この記述は間違いではないので、URLさえ変更すれば問題はないのですが、管理している別サイトに記述する際、いちいちアドレスを変更して記載しないといけません。ですので、どのサイトでも使えるように汎用版として記述したのが以下になります。
どのサイトでも使える記述(汎用版:コピペOK!)
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]
解説
1行目:RewriteEngine On
Rewrite機能を有効にします。
(Rewrite機能=アクセスのあったURLを、正規表現に書き換えてから処理をする機能。)
3行目:RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRuleを実行するための条件を定義します。
%{HTTP_HOST}=ホスト名(簡単にはwwwを含んだアドレス)を取得
^=正規表現の行頭:「.htaccess」が設置されている場所から見たURL
\.=「.」が特別な意味を持たないように「\」を使用している
(.*)=任意の0文字以上の文字
$=正規表現の行末
[NC]=大文字小文字を区別しない
3行目の定義としては、wwwが付いていれば(このサイトであれば「www.webdesign-abc.com」であれば)、4行目の処理を行いますよ。ということになります。
4行目:RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCondの条件に当てはまった場合は、RewriteRuleを実行します。
R=301=「301リダイレクト」([R=permanent]も同じ意味)
L=RewriteCondの条件にあてはまったRewriteRuleはここで終わり
ここまでが『wwwなしで統一する記述』で、
ここからが『[http]から[https]へ統一する記述』です。
6行目:RewriteCond %{HTTPS} !on
!on=「!」は否定なので、onではない場合=「httpsでアクセスされていない場合」=offと同じ意味
7行目:RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
%{HTTP_HOST}%{REQUEST_URI}=ホスト名はそのままで[http]を[https]に変換する
ちなみにここは『[http] から [https] へ。常時SSL化対応』と『URLの正規化:wwwあり、なしのドメインを統一する記述方法』をまとめたものになりますね。
ページのリダイレクト
RewriteEngine on RewriteRule ^old.html$ https://webdesign-abc.com/new.html [L,R=301]
新しいURLは、httpsから始まる絶対パスで記述してください。
ディレクトリのリダイレクト
RewriteEngine on RewriteRule ^old(.*)$ /new$1 [L,R=301]
.*はあらゆる文字列で、()で囲むと後方の$1に代入されます。
メモ
『RewriteEngine on』は一度書けば毎回書かなくてもOKなので、ページとディレクトリのリダイレクトをまとめて行う場合は、
RewriteEngine on RewriteRule ^old.html$ https://webdesign-abc.com/new.html [L,R=301] RewriteEngine on RewriteRule ^old(.*)$ /new$1 [L,R=301]
ではなく、
RewriteEngine on RewriteRule ^old.html$ https://webdesign-abc.com/new.html [L,R=301] RewriteRule ^old(.*)$ /new$1 [L,R=301]
でOK!
まとめ
正直、完璧に把握しきれていない部分もあるのですが、とりあえずこれでよいかと思います。また修正なり追記事項がああれば、適宜修正・追記していきたいと思います。
Google AdS
関連記事
-
はてなブックマーク(はてぶ)でブックマークしたURLを、まとめて変更する方法!
ドメインの変更をすると、301リダイレクトで対策をしたとしても(詳細はこちら)やはり今まで稼いできた被リンクも一緒に変更…
-
【2021】FacebookやTwitter CardのOGPの設定をする!チェックツールURLも!プラグインなし
今まで何度も『OGP』の設定に関する記事は書いてきたのですが、新規サイト立ち上げで参考にしようと見てみたら、Facebo…
-
日付を自動更新で表示させる! 簡単コピペ その2!
以前『日付を自動更新で表示させる! 簡単コピペ!!』を書いたのですが、その時の方法はJaveScriptで『docume…
-
サーバー移転の手順 その2:データベースの移行(phpMyAdminを使って)
前回サーバ移転の手順 その1:サーバーからサーバーへの移行(同サーバー(EXTREM)同士)からの続きです! って…
-
WP-OGPの設定方法:WPの投稿記事のサムネイルをFBできちんと表示させる
この記事は前回からの続きなのですが、、、実は1年経ってます。。下書きを途中まで書いてたのですが、あまりにも大変で途中で終…