スポンサーリンク

.htaccessの書き方に潜む罠

.htaccessについては過去のエントリーで.htaccessを利用したアクセスのリダイレクト方法などをご紹介していますが、一部ハマッたりする部分がありましたので、簡単にメモ。

.htaccessを利用してサイトへのアクセスをリダイレクト
この.htaccessを利用すれば旧ドメインのディレクトリへのアクセスをそのまま新ドメインへ転送できることがわかりました。

ドメイン移行時に旧サイトへのアクセスを新ドメインへ転送する方法。(.htaccessを利用したリダイレクト設定) | パソコンと家電の豆知識

 先日、当サイトのドメインの引っ越しをしました。
新しいドメインに移行する場合には旧URLへのリンクやアクセス、ページランクを引き継ぐために 301 Redirect を使って旧URLから新URLへリダイレクトをするのが一般的な方法ですが、いろいろ調べてみるとRedirect 301とRedirect permanentの二通りの方法が見つかりました。
この2つの方法は効果が違うんだろうか?と疑問をもったのでちょっと調べてみました。

新ドメイン移行時に301リダイレクトとリダイレクトパーマネントのどちらを使っても効果は同じです。 | パソコンと家電の豆知識

 具体的にどこでハマッたかというと、ドメイン配下のディレクトリからリダイレクトをする場合の設定です。

通常、

 

Redirect permanent / http://example.com/

 

 上記のリダイレクト設定が記載されている.htaccessへのアクセスに対しては、そのディレクトリに対する何らかのアクセスがあった場合にhttp://example.com/にパスを維持したまま転送するという動きをするのですが、なぜかうまくいきません。なぜでしょう?

結論だけ先に言うと、転送元の設定が問題でした。

管理人は設定事項にある / が”そのディレクトリのルート”と自分で勝手に思い込んでいたのですが、実は”そのディレクトリのルート”ではなく、そのサーバーのドキュメントルートからのパスとなっていたのでした。

たとえばhttp://test.com/example/からリダイレクトをかける場合は

 

Redirect permanent /example/ http://example.com/

 

と書かなければいけなかったんですね。ウーン奥が深い。

皆さんも.htaccessを利用したリダイレクト設定がうまく動かなかったらこの転送元のディレクトリ設定を疑ってみてくださいね。

ここでちょっと疑問が

ただ.htaccessの置いてあるディレクトリへのアクセスのされ方によっては同じディレクトリへアクセスしてもウェブサイトの表示が違う結果になるのが困り者。

具体的には.htaccessに

 

http://test.com/example/

 

でアクセスすればhttp://example.com/にリダイレクトされますが、レンタルサーバーの独自ドメインをhttp://test.com/example/に設定すると、http://example.com/にリダイレクトされずにエラーがでてしまうんですよね・・・。

リダイレクト設定を

 

Redirect permanent / http://example.com/

 

とすれば独自ドメインに来たアクセスをhttp://example.com/に飛ばせるのですが、今度はhttp://test.com/example/にアクセスしてきた人がhttp://example.com/example/にリダイレクトされ、まともにサイトが表示されない。こちらを立てればあちらが立たず・・・。

うまい方法があったらぜひコメントでご教示いただけたら幸いです。m(_ _)m

コメント