htaccessでトップページのみ301リダイレクトする方法

製作 プログラム

最終更新日:2016/10/03

ラムネグから一言:寝る前に読むとくだらなすぎて逆に寝れると好評なすごい適当なブログをこっちではじめてます.

トップページのみリダイレクトするには

あるURLにアクセスされたときに自動で他のURLに飛ばすことができます。この機能を301リダイレクトといい、主にサイトを移転したときやサイト内で部分的にURLを変更した際にSEO対策のために用いられます。

この301リダイレクトをすることでgoogleが行っているページごとの評価(この評価を元に検索結果の順位が決まります)を受け継ぐことが出来るといわれてます。301リダイレクトにはいくつか方法があるのですが、中でもhtaccessというファイルを使って行う301リダイレクトがgoogleの推奨方法となっています。

今回この301リダイレクトでトップページ(このサイトでいうとhttps://blog.dododori.com/)のURLからのリダイレクトの設定に手こずりましたので、同じような方の解決の糸口になればとこの記事を載せておきます。

  1. トップページのみリダイレクトするには
  2. トップページのみ301リダイレクトする方法
  3. コード説明
  4. 末尾に「△△.html」がある場合

トップページのみ301リダイレクトする方法

末尾に「△△.html」等がないトップページからのみ301リダイレクトする方法です。(末尾に「△△.html」がある場合は記事下部に載せています。)

トップページ以外のほかのURLではリダイレクトせずそのまま表示します。

RewriteEngine on
RewriteRule ^$ http://○○.com/ [R=301,L]

コード説明

(1行目)RewriteEngine on
これは今から301リダイレクトの機能を使いますよ~。と宣言している部分です。
(2行目)RewriteRule

よく見ると①「^$」と②「http://○○.com/」とそれから③「[R=301,L]」の3つの部分に半角スペースを挟んで分かれています。

①のURLでアクセスされたら、②に飛ばして!(301リダイレクト)という指定をしています。

③の部分はリダイレクトの方法を指定しています。(実は302リダイレクトという普段使わないものありそれとの兼ね合いです)

(2行目)①の「^」と「$」

「^」のニコチャンマークの目の部分と「$」についてです。これは今からURLの記述を始めるよ!という宣言の「^」とこれでURLの記述を終わるよ!という宣言文字「$」です。(正確には正規表現というものでURLの記述をする時の開始記号と終端記号となっています。)

ちなみに「^」の記号、キャレットと読みます。

(2行目)①の「^$」の意味

通常は「^○○\.html$」のように、始まり文字と終わり文字の間に調べたいURLを記述します。では「^$」はどういう意味になるのでしょうか。始まり文字と終わり文字の中身がありません。

中身がない、ということでこれは「空」だったら②に飛んでくれという指定になります。後述になりますが①の値はhtaccessを置いたフォルダの位置を基準に考えますので、「http://○○.com/△△.html」の「http://○○.com/」についてはすでにURLを指定したものとして処理されています。トップページでは「http://○○.com/」の後ろになにも存在しないので今回のように「^$」中身がなかったら、という指定になります。

①に正確なURLを書かなくていいの?
RewriteRuleの①についてはhtaccessファイルの置かれているフォルダからのパスを書けば動くようになっています。なので「http://○○.com/」の部分は記述しなくてもあるとして処理されるため、その後ろに続く、例えばindex\.htmlの記述だけでURLを指定する事ができます。
例で出てきた「index\.html」の「\」って何?

「\」はエスケープ文字といいます。後ろに続く記号をただの記号として処理してください、とお願いするものです。今回の場合「\」の後ろには「.」があります。この「.」は特殊な文字で、エスケープ文字をつけなければ、本来のドットの意味ではなくなってしまうためエスケープ文字「\」をつけています。

またパソコンによって「\」は円マークだったり逆スラッシュに見えたりしますが、おなじ物なので気にしないで大丈夫です。

末尾に「△△.html」がある場合

トップページのURLが「http://○○.com/△△.html」みたいのだとそのまま、

RewriteEngine on
RewriteRule △△\.html http://○○.com/△△.html [R=301,L]

で301リダイレクトできます。

URL末尾に「△△.html」があるとRewriteRuleの①に書くことができるのですが、URL末尾に何もない場合は①に書くことが分からなくなってしまい今回はまってしまいました。

参考になればさいわいです。

【おしらせ、というか完全なる宣伝】

文体がもうぜんぜん適当すぎてあれだけどものすごい自由に書いてるブログ「檸檬だくだく」もよろしく.寝る前に読める恐ろしくくだらないやつです.

こんなにも一ミリも目を引かれないタイトルを取り扱ってます: ココア20g / ハイチュウとかってさ / なぜ米と小麦を食べようと思ったのかの謎 /