独自ドメインのサイトが初期ドメインのサブディレクトリ(サブフォルダ)で表示されたり、wwwありwwwなしの統一に関するリダイレクト方法をまとめてみました。
管理人がぶち当たった壁(しかも、さっきw)なので色々試したり、調べたのでたぶん問題はクリアできると思います。
管理人がメインで使用しているサーバーは、Xreaやコアサーバー。
これら2つのサーバーでOKだったことがさくらのレンタルサーバーではダメだったりします。
企業が違えば仕様も異なるので当たり前といえば当たり前ですが・・・
ブラウザの画面いっぱいに「500 サーバーエラー」みたいのが出ると焦ったりww
そんなわけで、「さくらのレンタルサーバー」用のhtaccessによる301リダイレクトなどをまとめておきます。もしかしたら、ロリポップやXサーバー(X server)などでも使えるかもしれません。
【基礎事項(流れ)】
①TeraPadなどUTF-8で書けるソフトを準備(メモ帳は微妙らしい。いけるのかもしれないけど)。
②必要事項(後述)を書く。
③文字コードをUTF-8やUTF-8Nに指定して保存(.txtで保存。ファイル名は任意でOK)
④FTPソフト(ここではFFFTPで説明します)で「.htaccess」に名前を変えてアップロード(アップロード先はwwwフォルダ直下)
※念のため、やっておくと良いこと
アスキー転送モード(FFFTPだと「A」って書かれているボタンがあるのでクリックして選択します)でアップロードする。
パーミッションが604とか644になっているか確認しておきましょう(さくらではデフォルトで604にしてくれたので特に変更しないで済みました)。
【wwwありwwwなしの統一】
超注意事項!!
→いろんなサイトで紹介されている1行目に「Options +FollowSymLinks」をいれた場合。
さくらのレンタルサーバーではサーバーエラー500が表示されて失敗するので注意が必要です。
さくらのレンタルサーバ非公式FAQにも書かれているので要チェックです。
つまり・・・失敗例は以下(wwwあり→wwwなしに統一。逆の場合はwwwを入れ替えればOK)。
①wwwあり→wwwなしに統一
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.sampledayo\.sakura\.ne\.jp
RewriteRule (.*) http://sampledayo.sakura.ne.jp/$1 [R=301,L]
②wwwなし→wwwありに統一
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sampledayo\.sakura\.ne\.jp
RewriteRule (.*) http://www.sampledayo.sakura.ne.jp/$1 [R=301,L]
→サーバーエラー500が表示されます(さくら以外では成功することが多いです)。
正しい表記は以下(wwwあり→wwwなしへの統一の例)。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.sampledayo\.sakura\.ne\.jp
RewriteRule (.*) http://sampledayo.sakura.ne.jp/$1 [R=301,L]
ちなみに、$1を外すと、そのドメイン内のすべてのページがトップページに転送されます。
たとえば・・・
http://www.sampledayo.sakura.ne.jp/blog/にアクセスした場合では、
wwwなしの同じURLではなくて、http://sampledayo.sakura.ne.jp/とトップページに飛びます。
各ページごとにwwwありなしを統一したい場合は、$1を忘れずに!
【サブディレクトリに独自ドメインが表示されないようにする方法】
さくらのレンタルサーバーでは、初期ドメインがもらえます。
んで、独自ドメインを取得してサイトを公開すると次のような問題が発生します。
そのサイト内容が、独自ドメインと初期ドメインのサブディレクトリの両方で表示されてしまいます。
つまり、重複サイトが完成してしまうんです。
これの問題点は、誰かに気づかれてサブディレクトリのほうにリンクを貼られてしまうと、Googleのロボットがやってくる→インデックス→Googleさんでサイト分析→重複ページ(ミラーサイト)じゃん!→ペナルティ発生が起こる可能性があります。
具体的には・・・
①testdayo.comを取得してサイトを展開。
②testdayo.comのフォルダ名はtestにした。
③sampledayo.sakura.ne.jp/test/ ←このtest部分が独自ドメインのファイルが格納されているフォルダ。
にアクセスしても、①の内容が表示されてしまうんです。
というわけで、③のURLにアクセスした時に、①へ転送(301リダイレクト)する必要があります。
その方法を検索してて、ついに発見。
.htaccessの設定解説内の転送設定ページで紹介されてました。マジで神様に見えましたw
つまり、以下のように書きます。
Redirect permanent /test/ http://testdayo.com/
これは、③URLにアクセスした場合、①(例ではwwwなし)に転送することを意味します。
ちなみに、wwwありの場合では、
Redirect permanent /wwwari/ http://www.wwwari.com/
2つ以上の独自ドメインの場合は、改行して上記を記載していけばOKです。
■ありがちな失敗
Redirect permanent /test/の部分で、testの後ろの/を忘れると面白いことになります。
実際に試してみた結果は次の通り。
Redirect permanent /wwwari http://wwwari.com/ と記載。wwwariの後ろにスラッシュ/がないことに注意を。
sampledayo.sakura.ne.jp/wwwari にアクセスした場合→http://wwwari.com/
sampledayo.sakura.ne.jp/wwwari/ にアクセスした場合→http://wwwari.com//
2つ目のほうを見て分かるように、.comの後ろにスラッシュが2つ並びます(笑)
新たな重複サイトが完成するので、/を忘れないようにします。
というわけで、初期ドメインの.htaccessには、wwwありなし統一とサブディレクトリ転送設定の両方を記載することになりそうです。改行で続けて書いてしまって問題ありません。