htaccessの301リダイレクトの書き方とよくある間違い

Server

この記事では、301リダイレクト(URLの統一)の際のhtaccessの記述方法について説明した記事になります。

近年、従来の『http』から始まるURLでの表示だとアドレスバー左に『このサイトは安全では無い』のような警告文が表示されるようになり、常時SSL化の対応が必須になってきています。この時にURLが『s』付きと無し、『www.』付きと無しと複数に分かれ、htaccessでの301リダイレクトを必要とします。

ただhtaccessは失敗するとサイトが真っ白になったり、アクセスが出来なくなったりし最悪の場合だと復元不可能な程のエラーが起き、素人には中々弄りづらい部分かと思います。

そこでこの記事では、なるべくコピペで済むように、分かりやすくhtaccessでの301リダイレクトの記述方法をご教授いたします。

FTPソフトから直接設定する場合

まず初めに、FTPソフトを使って直接htaccessの設定をする方法をご説明いたします。この方法が一番安全で確実なので、基本的にはこのやり方を覚えておきましょう。

①デスクトップ上で『htaccess.txt』でファイルを作成する。

②『htaccess.txt』に下記載のコードをコピペで記載。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example\.co.jp
RewriteRule ^(.*)  [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$  [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L]

//ここからはコメントなので削除する//
//「www付き」「no secure」「index.html」全てをwww無しのsecure付きURLへ//
//example部分をドメイン名に//
//トップレベルドメインの書き換え忘れに注意//
//indexのリダイレクトルール(6,7行目)は書き換えるもの無し//

③上記のコードを書き換える。またコメントは削除する。

コードの書き換え方

  • 『example』の部分を適応したい自分のサイトのドメイン名に変更してください。
  • 『.co.jp』のトップレベルドメイン(セカンドレベルドメイン)もご自身のものに変更して下さい。*この時の『/』や『/』の位置は変えない様に注意。
  • (wwwありにリダイレクトしたい場合は『www.』を削除。)

④書き換えた上記『htaccess.txt』をFTPを使いindex.html(index.php)のあるディレクトリにアップロードする。

⑤FTP上でファイル名を『htaccess.txt』を『.htaccess』に書き換えると完了。

*サイトを確認してリダイレクト出来ていれば成功。サイトが表示されない、システムに不具合がでた場合は失敗。失敗した場合は『.htaccess』を再び『htaccess.txt』に名前を書き換えれば元に戻ります。

エックスサーバーをお使いの場合

エックスサーバーをお使いの方は、コントロールパネルからhtaccessを編集出来ますのでこの方法でリダイレクト設定を行うことも出来ます。(他のサーバーも同様のものもあるが今回はエックスサーバーのみ)

①エックスサーバーのサーバーパネルから『.htaccess編集』を選択

②指定のドメインを選び『.htaccess編集』へ。

③『IfModule mod_rewrite.c』より下にFTP使用時と同じ内容のコードを自身のドメインに書き換えてから記述する。

④確認画面に進み実行をすれば完了。

*サイトを確認しリダイレクトされていれば成功。エラーや真っ白いページになったりしたら失敗。失敗した場合は先ほどの『.htaccess編集』から新しく記述したものだけ削除すれば元に戻ります。

失敗の原因(注意点)

htaccessアクセスの失敗の原因は以下の様に案外単純なところにあるかと思います。

  • 空白がある。逆に空白が無い。
  • 半角空白が正しいところ、全角空白になっている。
  • /が無い
  • /が逆
  • .が無い
  • ファイルのアップ場所が違う
  • ファイル名が違う
  • どこかのスペルが違う

基本的に上記のコードの空白や記号などはそのままにドメイン名だけ書き換えるだけで成功するはずなので、失敗してしまった方は、変に弄ってしまってないか?アップロード場所やファイル名は合っているか?スペルは間違っていないか?をもう一度確認してみてください。

2020/01/24追記。
サーバーによってhtaccessの記述の仕方が指定されている場合もあるようです。GMOのiCLUSTA+では記述の指定がありそれ以外はエラーになります。

またこういったもののリスクヘッジとして必ずバックアップをとるようにしましょう。


以上が「htaccessの301リダイレクトの書き方とよくある間違い」でした。

繰り返しになりますが、htaccessは少しでも失敗すると最悪復元不可能となるので、作業は慎重に行いましょう。また最悪のケースを防ぐために必ずバックアップを取ってから作業をするようにしましょう。

SSL化については下記をご覧ください

2019年12月28日ServerApache,Backend,WEB

Posted by KT