サイトのドメイン変更に伴うリダイレクトの件
今まで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/
マルチドメインだからダメなのでしょうか?パスの間違い?解決方法をよろしくお願いします。
http://bbb.com/ はすでに http://www.bbb.org/ に使用されています。
#というボケをおいとくとこういう場合は http://example.com/ など使いましょう。
http://htaccess.cman.jp/explain/redirect.html
Redirect permanentの最初の引数はURLのホスト名より下の部分です。
http://bbb.com/ はすでに http://www.bbb.org/ に使用されています。
#というボケをおいとくとこういう場合は http://example.com/ など使いましょう。
http://htaccess.cman.jp/explain/redirect.html
Redirect permanentの最初の引数はURLのホスト名より下の部分です。
TransFreeBSD様、ご丁寧にありがとうございます。
実はサーバーの契約などはクライアントが行い、その間に代理店が入っているので、こちらでは事情がよくわからなかったのです(代理店に聞いても担当者が私以上のど素人で、まったく話になりません)。
昨日やっとログイン情報などをもらってサーバーに入ってみました。 OCN for Bussiness(メール&ウェブ プロ A)で、コントロールパネル(iManager)に入ったところ
現在設定ファイル(httpd.conf)にはバーチャルホストが登録されていません。という表示でした。
これは、まずバーチャルホストの設定を行ったうえで、リダイレクトの.htaccessを置く、という手順になるのでしょうか(設定してないのにどちらにもアクセスできてるのが理解できないのですが)。
おんぶに抱っこで申し訳ありません。よろしくご教授ください。
なかなかコメント出来なくてすいません。
ちょっと勘違いしていました。マルチドメインとあったのでバーチャルホストの設定もされていると思い込んでいました。
バーチャルホストの設定をしなくても(むしろしていなければ)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
TransFreeBSD様、ご丁寧にありがとうございます。
2014/01/29 10:06:45実はサーバーの契約などはクライアントが行い、その間に代理店が入っているので、こちらでは事情がよくわからなかったのです(代理店に聞いても担当者が私以上のど素人で、まったく話になりません)。
昨日やっとログイン情報などをもらってサーバーに入ってみました。 OCN for Bussiness(メール&ウェブ プロ A)で、コントロールパネル(iManager)に入ったところ
現在設定ファイル(httpd.conf)にはバーチャルホストが登録されていません。という表示でした。
これは、まずバーチャルホストの設定を行ったうえで、リダイレクトの.htaccessを置く、という手順になるのでしょうか(設定してないのにどちらにもアクセスできてるのが理解できないのですが)。
おんぶに抱っこで申し訳ありません。よろしくご教授ください。
なかなかコメント出来なくてすいません。
ちょっと勘違いしていました。マルチドメインとあったのでバーチャルホストの設定もされていると思い込んでいました。
バーチャルホストの設定をしなくても(むしろしていなければ)DNSの設定さえすれば同じ内容をどちらのドメインでもアクセス出来るようになります。
あと、http.confではなく.htaccessによる設定の話だったのですね。
私の回答はhttp.confでなければ出来ないバーチャルホストの設定の一部としてリダイレクトを設定する方法でした。
それ以外の方法でバーチャルホストの設定をせずとも.htaccessで出来る方法として2案を。
一つはifディレクティブを使って条件付きでリダイレクトを行う方法で、シンプルで良いのですがifディレクティブはapache2.4以降でなければ使えません。
下記参考にちょっと変えてあります。
http://httpd.apache.org/docs/2.4/rewrite/avoid.html#setenv
もう一つはmod_writeを使う方法です。
mod_rewriteは色々書き方があって迷うんですが、下記参考にアレンジしました。
2014/01/31 20:51:25http://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