以下の問題を解決します。
.httacessファイルでリダイレクトできない原因は様々です。
どのような原因があるか解説していきます。
かなり初歩的ですが、まれにあります。
ファイル名が「.htaccess」であることを確認しましょう。
一般的なレンタルサーバーを利用している場合、パーマリンクを更新すると自動的に.htaccessが生成されるので間違いは起こりません。
自作のサーバーや、VPS、専用サーバーなどで運用している場合は念の為、ファイル名に間違いがないかを確認しましょう。
ダメな例
ほとんどの場合、ワードプレスのルートディレクトリーに.htaccessを設定しているかと思います。
ルートディレクトリー以外のディレクトリーに.htaccessは設置している場合にはリダイレクト設定が競合している可能性があります。
まれに、異なる.htaccessの設定が競合してしまい、設定内容が反映されない場合があります。
競合とは、「ケンカ」ですね。
「おれはこうしたいー」と兄.htaccesが主張し、弟.htaccessが「違うー!僕は、これがいい!」と言っているような状態です。
もちろん.htaccessの複数設置はOKです。
競合していないかを確認する為に、バックアップを用意した後、一時的にどちらかのファイルを削除してみましょう。
ちなみに.htaccess以外にも競合の原因となるものがあります。
競合の原因
競合の原因となるものを一つ一つ確認しましょう。
例えば、テーマであれば一時的にテーマ別のものにしてみるといった方法を試してみましょう。
リダイレクトに限らず、.htaccessが正しく動作しない一番の原因は、記述ミスです。
「^」「*」などの正規表現は慣れない運用者にとっては宇宙語みたいなものですので、失敗しがちです。このミスをなくすために、.htaccessチェックツール(バリデーター)を使うことをお勧めします。
無料で使えるチェックツールを紹介します。ブラウザでチェックを行えるツールタイプですので、ソフトのインストールは不要です。
.htacsess checkの使い方
問題のある記述がある場合、赤線で教えてくれます。
簡単ですね。
同じようなチェックツールは他にもあります。
チェックツール「lyxx」
こちらのツールも先ほど紹介した「.htacsess check」と同じです。
入力エリアに.htacsessの内容をぺイストし、画面右手に表示されている「check it」をクリックすると、結果が表示されます。
リダイレクトのコードは.htaccessの適切な場所に記載します。
.htacces記載する場所(順序)により、意図したリダイレクトをしないことがあります。
×まちがいの場所
RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress ここにリダイレクトのコード
〇正しい場所
ここにリダイレクトのコード # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
.htaccessのリダイレクト用サンプルコードを紹介します。
主に、ワードプレスの運用で利用されるリダイレクトの書き方です。
自分のサイトにあるold.htmlページへのアクセスをhttp://text.com/new.htmlにリダイレクトしています。「texst.com」は自分のサイトとして想定してください。
Redirect 301 /old.html http://text.com/new.html
302リダイレクトは一時的なリダイレクトが必要な際に利用します。
これに対して301は恒久的なリダイレクトです。
Redirect 302 /old.html http://text.com/new.html
test.comへのアクセスをwww.test.comへリダイレクトする記述です。
RewriteEngine on RewriteCond %{HTTP_HOST} ^test.com [NC] RewriteRule ^(.*)$ http://www.teset.com/$1 [L,R=301,NC]
※test.com/001.htmlへのアクセスもwww.test.com/001.htmlへリダイレクトしてくれます。
ひとつ前のサンプルと逆の動作をします。
www.test.comへのアクセスをtest.comへリダイレクトする記述。
RewriteEngine on RewriteCond %{HTTP_HOST} ^www.test.com [NC] RewriteRule ^(.*)$ http://test.com/$1 [L,R=301]
サイトをSSL化した際に追加するべきコードです。
「http://」のアクセスを、「https://」にリダイレクトする記述。
RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
test.comへのアクセスをtest.com/サブディレクトリーにリダイレクトする記述。
RewriteCond %{HTTP_HOST} ^test.com$ RewriteCond %{REQUEST_URI} !^/サブディレクトリー名/ RewriteRule (.*) /サブディレクトリー名/$1
ドメインを2つ持っている場合で、全てのアクセスをtest.comドメインへリダイレクトする記述。
Redirect 301 / http://test.com
.htaccessの編集はPCにファイルをダウンロード→編集→ファイルをアップロードとわずらしいです。
FTPのアカウントを忘れた場合は、さらに面倒ですよね?
そんな時は、ワードプレスのダッシュボード上から.htaccesを編集可能にしてくれるプラグインがあります。
このプラグインには、.htaccesの自動バック機能と、文法チェック機能があります。
初心者にも優しい設計です。
いかがでしたか?
WordPressサイトで.htaccessでリダイレクトできるようになりましたか?
.htaccessでリダイレクトはハマると、ひたすらリダイレクトできないで困りますよね。
便利なリダイレクト用プラグインを使う方法もありますが、プラグインを増やすのはあまりお勧めしません。
プラグインはワードプレスのバージョンが上がると、動作しなくなるものがあるからです。
できるだけ、プラグインを利用せずに、ワードプレスの運用ができるといいですね。
本記事が皆さんのお役に立てば幸いです。
人気記事 初心者でも可能なSEO対策って何?
人気記事 【ゼロから始める】副業ブログで月5万円を稼ぐ!当社スタッフが試してみた方法と成果を公表