単一のサーバー内でのマルチドメインのリダイレクトがうまくいきません。


サイトのドメイン変更に伴うリダイレクトの件
今までhttp://aaa.comというドメインを、今回http://bbb.com(新規に取得済み)というドメインに変更します。
その際、別のサーバー、別ディレクトリではなく
単一フォルダに対して二つのドメインを設定するマルチドメイン(現在すでに運用中)としています。

現在すでにマルチドメインで運用中で、おおよそ2ヵ月後に古い方のドメインhttp://aaa.comを破棄し、新しいドメインhttp://bbb.comのみで運用予定です。

なので、検索エンジン対策としてディレクトリに.htaccessファイルを置き、もともとのhttp://aaa.comへのアクセスをそのままhttp://bbb.comへリダイレクトさせたいわけです。

.htaccessの記述は以下にしております。
Redirect permanent /usr/local/apache/htdocs/ http://bbb.com/

サーバの構造上はこれで合ってるはずなのですが。http://bbb.comへは飛びません。
ちなみにこれを以下に変えてもまったく同じで飛びませんでした。
Redirect permanent /htdocs/ http://bbb.com/

マルチドメインだからダメなのでしょうか?パスの間違い?解決方法をよろしくお願いします。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2014/01/31 10:15:04

ベストアンサー

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268

http://bbb.com/ はすでに http://www.bbb.org/ に使用されています。
#というボケをおいとくとこういう場合は http://example.com/ など使いましょう。

http://htaccess.cman.jp/explain/redirect.html
Redirect permanentの最初の引数はURLのホスト名より下の部分です。

他2件のコメントを見る
id:hirapi2104

TransFreeBSD様、ご丁寧にありがとうございます。

実はサーバーの契約などはクライアントが行い、その間に代理店が入っているので、こちらでは事情がよくわからなかったのです(代理店に聞いても担当者が私以上のど素人で、まったく話になりません)。

昨日やっとログイン情報などをもらってサーバーに入ってみました。 OCN for Bussiness(メール&ウェブ プロ A)で、コントロールパネル(iManager)に入ったところ
現在設定ファイル(httpd.conf)にはバーチャルホストが登録されていません。という表示でした。

これは、まずバーチャルホストの設定を行ったうえで、リダイレクトの.htaccessを置く、という手順になるのでしょうか(設定してないのにどちらにもアクセスできてるのが理解できないのですが)。

おんぶに抱っこで申し訳ありません。よろしくご教授ください。

2014/01/29 10:06:45
id:TransFreeBSD

なかなかコメント出来なくてすいません。

ちょっと勘違いしていました。マルチドメインとあったのでバーチャルホストの設定もされていると思い込んでいました。
バーチャルホストの設定をしなくても(むしろしていなければ)DNSの設定さえすれば同じ内容をどちらのドメインでもアクセス出来るようになります。
あと、http.confではなく.htaccessによる設定の話だったのですね。
私の回答はhttp.confでなければ出来ないバーチャルホストの設定の一部としてリダイレクトを設定する方法でした。

それ以外の方法でバーチャルホストの設定をせずとも.htaccessで出来る方法として2案を。

一つはifディレクティブを使って条件付きでリダイレクトを行う方法で、シンプルで良いのですがifディレクティブはapache2.4以降でなければ使えません。

<If "${tolower:%{HTTP_HOST}} == 'old.example.jp'">
    Redirect permanent / http://new.example.com
</If>

下記参考にちょっと変えてあります。
http://httpd.apache.org/docs/2.4/rewrite/avoid.html#setenv

もう一つはmod_writeを使う方法です。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^old\.example\.jp$ [NC]
RewriteRule ^/(.*) http://new.example.com/$1 [L,R=301,NE]

mod_rewriteは色々書き方があって迷うんですが、下記参考にアレンジしました。
http://koseki.hatenablog.com/entry/20090611/ModRewrite
http://httpd.apache.org/docs/2.2/rewrite/remapping.html#canonicalhost
ifディレクティブの場合もそうなのですが、HTTP_HOSTが空の時が気になるので否定条件ではなく狙い撃ちに変えてあります。

ただmod_rewrite使う方法は、多分ほかでmod_rewrite使ってると問題が出ると思います。
回避方法は下記にありますが、それぞれ書き換える必要があるのと、トラブルも出やすいと思うので、出来るならmod_rewriteを使うよりVirtualHost使うのが良い気がします。
http://www.ecoop.net/memo/archives/2011-03-02-1.html

2014/01/31 20:51:25

その他の回答0件)

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268ここでベストアンサー

http://bbb.com/ はすでに http://www.bbb.org/ に使用されています。
#というボケをおいとくとこういう場合は http://example.com/ など使いましょう。

http://htaccess.cman.jp/explain/redirect.html
Redirect permanentの最初の引数はURLのホスト名より下の部分です。

他2件のコメントを見る
id:hirapi2104

TransFreeBSD様、ご丁寧にありがとうございます。

実はサーバーの契約などはクライアントが行い、その間に代理店が入っているので、こちらでは事情がよくわからなかったのです(代理店に聞いても担当者が私以上のど素人で、まったく話になりません)。

昨日やっとログイン情報などをもらってサーバーに入ってみました。 OCN for Bussiness(メール&ウェブ プロ A)で、コントロールパネル(iManager)に入ったところ
現在設定ファイル(httpd.conf)にはバーチャルホストが登録されていません。という表示でした。

これは、まずバーチャルホストの設定を行ったうえで、リダイレクトの.htaccessを置く、という手順になるのでしょうか(設定してないのにどちらにもアクセスできてるのが理解できないのですが)。

おんぶに抱っこで申し訳ありません。よろしくご教授ください。

2014/01/29 10:06:45
id:TransFreeBSD

なかなかコメント出来なくてすいません。

ちょっと勘違いしていました。マルチドメインとあったのでバーチャルホストの設定もされていると思い込んでいました。
バーチャルホストの設定をしなくても(むしろしていなければ)DNSの設定さえすれば同じ内容をどちらのドメインでもアクセス出来るようになります。
あと、http.confではなく.htaccessによる設定の話だったのですね。
私の回答はhttp.confでなければ出来ないバーチャルホストの設定の一部としてリダイレクトを設定する方法でした。

それ以外の方法でバーチャルホストの設定をせずとも.htaccessで出来る方法として2案を。

一つはifディレクティブを使って条件付きでリダイレクトを行う方法で、シンプルで良いのですがifディレクティブはapache2.4以降でなければ使えません。

<If "${tolower:%{HTTP_HOST}} == 'old.example.jp'">
    Redirect permanent / http://new.example.com
</If>

下記参考にちょっと変えてあります。
http://httpd.apache.org/docs/2.4/rewrite/avoid.html#setenv

もう一つはmod_writeを使う方法です。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^old\.example\.jp$ [NC]
RewriteRule ^/(.*) http://new.example.com/$1 [L,R=301,NE]

mod_rewriteは色々書き方があって迷うんですが、下記参考にアレンジしました。
http://koseki.hatenablog.com/entry/20090611/ModRewrite
http://httpd.apache.org/docs/2.2/rewrite/remapping.html#canonicalhost
ifディレクティブの場合もそうなのですが、HTTP_HOSTが空の時が気になるので否定条件ではなく狙い撃ちに変えてあります。

ただmod_rewrite使う方法は、多分ほかでmod_rewrite使ってると問題が出ると思います。
回避方法は下記にありますが、それぞれ書き換える必要があるのと、トラブルも出やすいと思うので、出来るならmod_rewriteを使うよりVirtualHost使うのが良い気がします。
http://www.ecoop.net/memo/archives/2011-03-02-1.html

2014/01/31 20:51:25
id:hirapi2104

最後時間切れになってしまいました。残念です。ちなみにまだ解決しておりません。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません