人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

サイトのドメイン変更に伴うリダイレクトの件
今まで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/

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


●質問者: hirapi
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● TransFreeBSD
ベストアンサー

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

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


hirapiさんのコメント
ありがとうございます。「bbb.com」は何気なく使ったのですが、ご指摘の通り実在するアドレスでしたね。すみません、次回から気をつけます。 元のアドレスをhttp://example-old.com 新しいアドレスをhttp://example-new.com とします。 最初の引数はURLのホスト名より下と言う事ですが、そうなるとこうなりますよね。 Redirect permanent / http://example-new.com これで、リダイレクト自体は成功しました(http://example-old.comにアクセスすると、ウィンドウのURLはhttp://example-new.comに切り替わりました。 しかし、Win7・Crhome「リダイレクトループが発生しています」Win7・IE「ウェブページが表示されません」iPhone「多くのリダイレクトが発生しています」等の警告が出て何も表示されない現象が起きました。無限ループというものでしょうか?時間が経つとリダイレクトされてたりしますが、動きが一定ではなく不安定です。ご教授くだされば…

TransFreeBSDさんのコメント
両方でリダイレクトが有効になっているのでは? ヴァーチャルホストの設定はなされていますか? http://centossrv.com/apache-virtualhost.shtml http://www.apache.jp/pipermail/apache-users/2005-February/005044.html [以下蛇足] http://example.com/ については言葉足らずでしたね。一応決まりがあります。 http://www.atmarkit.co.jp/fwin2k/win2ktips/801exampledom/exampledom.html http://example.com/ や http://example.org/ は実際にアクセスするとその旨出ます。example.co.jp や example1.jp も出るといいけどな。 #まあ分かるからいいっちゃいいけど、せっかくなので。 あとはてなでは、urlは次のように書くとリンクになりません >|| []http://example.com/[] ||< ↓ []http://example.com/[]

hirapiさんのコメント
TransFreeBSD様、ご丁寧にありがとうございます。 実はサーバーの契約などはクライアントが行い、その間に代理店が入っているので、こちらでは事情がよくわからなかったのです(代理店に聞いても担当者が私以上のど素人で、まったく話になりません)。 昨日やっとログイン情報などをもらってサーバーに入ってみました。OCN for Bussiness(メール&ウェブ プロ A)で、コントロールパネル(iManager)に入ったところ 現在設定ファイル(httpd.conf)にはバーチャルホストが登録されていません。という表示でした。 これは、まずバーチャルホストの設定を行ったうえで、リダイレクトの.htaccessを置く、という手順になるのでしょうか(設定してないのにどちらにもアクセスできてるのが理解できないのですが)。 おんぶに抱っこで申し訳ありません。よろしくご教授ください。

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

質問者から

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


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ