WordPressでリダイレクト:『.htaccess』の書き方まとめ

Pocket

『.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を実行します。

%1$1=直前のRewriteCondの(.*)で取得したホスト名が入り、wwwなしのアドレスに変換する

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!

まとめ

正直、完璧に把握しきれていない部分もあるのですが、とりあえずこれでよいかと思います。また修正なり追記事項がああれば、適宜修正・追記していきたいと思います。



関連記事

画像やテキストを中央(上下左右真ん中)に配置する方法


普通にtext-align:center;や、margin:0 auto;等でテキストや写真を真ん中に配置したつもりでも…

記事を読む▷


お名前.com から脱出する!:ドメインの移管方法


『お名前.com』でドメイン取得してからは、『Whois情報公開代行』の件(詳細はこちら)で大変な思いをしたのですが、そ…

記事を読む▷


Thumbnail_Icon_firefox_bug

Firefoxでなぜか消える、Tableのborder対策、cssのみでの解決法


Firefoxでなぜか消えてしまうTableのborder、いつもじゃなく、たまになのでこれがやっかい。。原因がわからな…

記事を読む▷


WP Social Bookmarking Lightを好きな場所に設置、移動する方法


WP Social Bookmarking Lightを好きな場所に設置、移動する方法です。 以前、自分で管理している…

記事を読む▷


no image

テキスト、画像を選択できなくする方法


facebookで『続きを読みたかったらいいねを教えてね!』みたいな記事がよくありますが、必ずそういう記事に限ってコピペ…

記事を読む▷


Database Search and Replace Script in PHP

ドメイン&WordPressを含むサイトの引越しでの、URL変更作業:『DATABASE SEARCH AND REPLACE SCRIPT IN PHP』を使って


最近サーバー移転をして、その時々に起こった問題や注意点を記事にしてましたが(301リダイレクトの記述方法、URLの正規化…

記事を読む▷


【2020】<head>タグの記述例=順番等もきちんと考えた雛形(テンプレート)


一度サイトを作ってしまうと、あまり見直すことのないheadタグ内の記述。新たなLPを作ったりする時でも、以前作ったものの…

記事を読む▷


サーバー移転の手順 その2:データベースの移行(phpMyAdminを使って)


前回サーバ移転の手順 その1:サーバーからサーバーへの移行(同サーバー(EXTREM)同士)からの続きです! って…

記事を読む▷


サーバー移転の手順 その3:移転後のトラブル


前回、前々回と書きましたが、サーバーの移転、少々、いや、かなりやいこしいです。できたあとは疲れ果てて『もーできたしえーわ…

記事を読む▷


WPで全ページ見れなくなった時

WordPressの記事がトップページ以外、全部見れなくなった時の対処方法(404 error)


年末にサーバーの移転を進めていたのですが、以前に何度かサーバーの移転やWordpressの引っ越し等々していたので、大変…

記事を読む▷


Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

参考にさせていただいてるサイト

PAGE TOP