例えば、メインのサイトのURLが「http://sample.com」であると仮定します。

新しいページや階層を追加するとき、通常は「http://sample.com」の直下にフォルダを作り、「http://sample.com/blog/」のようなURLになります。
これを「サブディレクトリ型」と言います。

対して、「http://blog.sample.com/」のように、「sample.com」の前に任意の文字列を追加した形のURLを「サブドメイン型」と言います。

サブディレクトリ型のみの運用であれば何も問題ありませんが、サブドメイン型で運用する際には幾つかの注意と追加の設定が必要です。

具体的に必要な処理は3つ。

  1. [.htaccess]によるリダイレクト処理
  2. 「www」の有無を301リダイレクトで統一
  3. [robots.txt]でクローラーのアクセスを制限

以下、順に説明していきます。

[.htaccess]によるリダイレクト処理

「sample.com」の直下に「blog」と名付けたディレクトリを作成し、このディレクトリにサブドメイン「blog」を割り当てたとします。
このとき、「サブドメインでのURL」と「ディレクトリへのパスのURL」、2つのURLで同一のページにアクセスできてしまうという現象が発生します。

  • http://blog.sample.com/
  • http://sample.com/blog/

内容がまったく同じなのに、上記のように2つのURLが共存するというのはSEO的にNGです。
そこで、正規のURL(この場合はサブドメイン型)でのみアクセス可能なように[.htaccess]でリダイレクト処理を施す必要があります。

[.htaccess]に書き加えるのは以下のコード。

Redirect /blog/ "http://sample.com/"

これで「http://sample.com/blog/」にアクセスすると「http://blog.sample.com/」にリダイレクトされるので、一先ずは重複するコンテンツの問題は解決されます。

wwwの有無を301リダイレクトで統一

次に解決するべきは「www」の有無を統一することです。先ほどの問題と同じように、何も設定をしていない状態だと「http://www.blog.sample.com/」と「「http://blog.sample.com/」のどちらでもアクセス可能なので、同じように[.htaccess]で設定します。

「www」無しの場合

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

「www」有りの場合

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

補足になりますが、[.htaccess]は非常に重要なファイルです。セキュリティのため、必ずパーミッションを確認して[644]に設定します。

[robots.txt]でクローラーのアクセスを制限

最後に検索エンジンのクローラーに向けた設定です。
前述までの処理で重複する2つのコンテンツ「http://blog.sample.com/」と「http://sasmple.com/blog/」を正規のURLでのみアクセス可能なように設定しました。

しかし[robots.txt]による指示がない限り、デフォルトでは検索エンジンに対してすべてのアクセスを許可する状態になっているため、URLが異なるという理由で、結局は両方のページがインデックスされてしまいます。

[robots.txt]の記述例は以下。

User-agent: *
Disallow: /blog/
Allow: /

これで検索エンジンに対しても「http://blog.sample.com/」へのアクセスだけが許可され、「http://sasmple.com/blog/」はインデックスしない(アクセスしない)ように指示できます。

ちなみに[robots.txt]はあくまでも検索エンジンのアクセスを制限したい場合にのみ設置するもので、そうでない場合はそもそも設置する必要はありません。


サブドメイン型のURLを設置することを業界用語では「サブドメインを切る」と表現します。
今後サブドメインを切る際には、ここで説明した3つのポイントを必ず確認することをお勧めします。