今回のブログは、院長の忘備録的な内容です。
申し訳ございませんが、今回の記事は、HP作成の経験がない方には全く意味不明の内容になります。ご注意くださいね。
「URLの正規化」とは何ぞや? という話ですが、私もつい最近知りました。
ホームページにはそれぞれアドレスがあります。
(このブログですと https://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でも、
https://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]
という形になります。
これでようやく解決しました!
上手くいったときは、思わずガッツポーズでした(^_^;)
ということで、このブログをご覧の方で、万が一、さくらサーバを使っている方がいらっしゃれば、参考にして頂けると嬉しいです。