ウェブマスターがウェブのことを書いたら

ウェブマスターとして働いている管理人がウェブで躓いたこと、ググったことを備忘録として書いています。主に技術的なこと、WEBサイト設計のこと

新規サイト公開時に初期設定したい.htaccessの書き方まとめ

      2016/08/02

 - サイト設計

WordPressなどのCMSではすでに設定されている内容ですが、静的ページやphpなどCMS以外でサイトを作った場合は、.htaccessに自分で設定しなければなりません。

今回は新規にサイトを公開する時に.htaccessに最低限、SEOを考慮したサーバー初期設定しておきたい記述内容、書き方をまとめます。

.htaccessの記述内容

まず結論から記述内容は以下です。

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

## SSL化する場合のみ記述↓
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Xサーバーやロリポップなどのレンタルサーバーでも上記設定で問題ないです。緑字のドメインの箇所はサイトのドメインに変更してください。

設定内容の説明

1行目のRewriteEngine onはApacheのモジュール、mod_rewriteを有効化するコードです。これを記述することで.htaccessでRewriteを有効化できます。

この記述のあとに、RewriteRuleやRewriteCondを使用してURL書き換えの条件、ルールを記述することで、URL書き換え等が行われます。また、RewriteEngine Offとすると他に記述した全てのRewriteが無効となります。

wwwあり、なしの統一設定

2行目、3行目の記述内容はドメインをwwwありで表示させるか、wwwなしで表示させるかの設定です。上記設定例ではwwwなしの場合の設定例です。wwwありの場合は以下の記述内容に変更しましょう。

wwwありの場合の記述内容

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.tuono034s\.com$
RewriteRule (.*) http://tuono034s.com/$1 [R=301,L]

緑字のドメインの箇所はサイトのドメインに変更してください。

当サイトの場合、サイトのURLはhttp://tuono034s.com/です。この場合はwwwなしでドメインを表示させています。サイトのURLをhttp://www.tuono034s.com/と表示させたい場合はwwwありの設定を記述します。

wwwなしの設定をした場合は、http://www.tuono034s.com/でアクセスするとhttp://tuono034s.com/にリダイレクトされます。

wwwあり、なし設定をする理由

この設定がなければ

http://tuono034s.com/
http://www.tuono034s.com/

どちらでもサイトにアクセスできることなり、SEO上、不利になる場合があります。

これはwwwあり、wwwなしどちらのURLにアクセスしても同じ内容のページが表示されてしまい、検索エンジンは別サイトと見なしてしまいます。

wwwあり、wwwなしのページの両方が検索エンジンにインデックスされてしまい、同じページの重複コンテンツとなってしまうのでサイトの評価を落としてしまいます。

10ページしかないサイトであっても20ページインデックスされる状態になります。すべてのページが2ページづつあることになってしまいます。

またこの状態ではwwwあり、なしどちらでもアクセスできてしまうので例えば、http://tuono034s.com/1234.html、http://www.tuono034s.com/1234.htmlどちらのページにも被リンクされる可能性があります。そうした場合、被リンクが分散してしまうのでサイト評価も分散されることになりSEO上、不利になる場合があります。

index.htmlなしに統一設定

4行目、5行目の記述内容はindex.htmlをあり、なしで表示させるかの設定です。上記設定例ではindex.htmlなしに統一した設定例です。

この設定も上記のwwwあり、なしの統一設定と同様の考え方で、ディレクトリトップのページをindex.htmlで作成した場合は

http://tuono034s.com/
http://tuono034s.com/index.html

のどちらでもアクセスできてしまい、別のページとして検索エンジンに認識されてしまい、評価が分散されます。

そのためhttp://tuono034s.com/index.htmlにアクセスされた場合は、http://tuono034s.com/にリダイレクトする上記設定を記述する必要があります。

こちらの設定は、wwwあり、なしの設定をしなかった場合と比べると、1ページのみの重複になりますが(wwwあり、なしの設定をしない場合はサイト全ページが重複されるのに対して)内部リンクの記述を場所によって、http://tuono034s.com/index.htmlとhttp://tuono034s.com/の統一なくばらばらに記述してしまっていると、重複が起きやすいです。

また、indexページをindex.htm、index.phpで作成している場合はindex.htmlの箇所をindex.htm、index.phpに変更してください。

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

常時SSL化する場合

サイトをHTTPからHTTPSに常時SSL化する場合は最後の2行も記述します。この設定をした場合は、http://tuono034s.com/でアクセスするとhttps://tuono034s.com/にリダイレクトされます。

追記:2016.08.02

常時SSL化する場合は、HSTS(HTTP Strict Transport Security)という設定をすることでセキュリティを高めることができます。

簡単に説明すると、
SSL化したとしてもhttpでアクセスされる場合があり、セキュリティ上では万全ではない(通信を傍受されたりフィッシング詐欺に遭ったりする危険性がある)ようです。それを防ぐ仕組みとしてサーバー側でHTTPSで必ず接続するようにとブラウザに指示するのが、HSTSの設定です。

HSTSについて詳しくは
HTTPSを使うなら“HSTS”と“HSTSプリロード”でセキュリティを高めよう など10+4記事 | 海外&国内SEO情報ウォッチ

設定内容については
ブログの完全HTTPS化を完了、HTTPからHTTPSへの移行プロセスを共有 | 海外SEO情報ブログ
記述内容は、より確実にするため「プリロードHSTS」の方が良いです。その場合、サブドメインも含めてすべてHTTPSで運用している必要があります。

HSTSの設定についてはこちらの記事に詳しくまとめています。
常時SSL化(https)するときのHSTS設定の方法と注意点

以上が新規サイト公開時の設定内容のまとめです。

1人の方が、「この記事が参考になった」と評価しています。