URLの正規化(wwwあり・なし。index.htmlあり・なし)さくらサーバー

今回のブログは、院長の忘備録的な内容です。

申し訳ございませんが、今回の記事は、HP作成の経験がない方には全く意味不明の内容になります。ご注意くださいね。

「URLの正規化」とは何ぞや? という話ですが、私もつい最近知りました。
ホームページにはそれぞれアドレスがあります。
(このブログですと http://kusatsu-chiro.com/hope/ ですね)
そのアドレスのことをURLと言います。

あるホームページのトップページのURLは、例えば
http://example.com/
という形になります。(「example」は、HPによって変わる部分です)
ところが、同じトップページが、異なるURLで表示される場合があります。
それが、「wwwあり・なし」「index.htmlあり・なし」です。


http://example.com/index.html
http://www.example.com/

こういう感じで、「wwwあり・なし」「index.htmlあり・なし」のURLでも、同じトップページが表示される場合があります。
そうすると、違うURLなのに、内容が全く同じページがいくつもある、ということで検索エンジン(グーグルさん)を混乱させてしまう可能性があります。
そこで、「www」あるなしなど、どのURLにアクセスしても、一つのURLに導かれるように統一したいわけです。

http://example.com/index.html
http://www.example.com/

…など、どのURLでも、

http://kusatsu-chiro.com/ (正規のURL)

に自動的に導かれるように設定する、というのが「URLの正規化」ということですね。

では、その方法とは…?

wwwあるなしなど、どのURLにアクセスしてきても、一つのURLに導かれるよう、サーバーに指示を伝えます。
その「指示書」が、「.htaccess」というものです。
これで「ドットエイチティーアクセス」と読みます。
どやって作るかと言うと…。

ウィンドウズのメモ帳などを使い、テキストで必要な構文を書く。

そのテキストファイルを、転送ソフト(FFFTPなど)を使ってHPを設置しているサーバーに転送する。

ファイル名を「.htaccess」に変更する(.txtなどの拡張子を消す)

という流れで作ることができます。
指示書の内容である構文は、検索するとすぐ出てきます。
例えば、こんな感じです。

【wwwなしに統一】
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com
RewriteRule (.*) http://example.com/$1 [R=301,L]

【index.htmlなしに統一】
Options FollowSymLinks
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.example.com/$1 [R=301,L]

※「example.com」はHPによって変わります。

この通りに書いて、サーバーに「.htaccess」を設置すれば、解決…と思いきや。

ここでトラブルが発生です。

「indexなしに統一」の構文を書いて設置すると、なぜかHPが表示されなくなってしまうのです!(500エラーが出る)
どうしてうまくいかないのか、散々時間を費やし、色々調べました…。
ようやく、原因がわかりました。
当院のHPは、「さくらインターネット」という会社のレンタルサーバを使っています。
ここからが、この忘備録の本題なのですが、実は

さくらサーバでは、「Options FollowSymLinks」と記述すると、エラーになってしまうのです!

なので、この構文を使わずに、指示書を作成します。具体的には

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ http://www.example.com/$1 [R=301,L]

という形になります。
これでようやく解決しました!
上手くいったときは、思わずガッツポーズでした(^_^;)

ということで、このブログをご覧の方で、万が一、さくらサーバを使っている方がいらっしゃれば、参考にして頂けると嬉しいです。