ROUTE286 - http://r286.com/

2 8 6 - ROUTE286 の後継ブログ。

今後は 2 8 6 で記事投稿・ブログ公開を行います。
ROUTE286 の新たな記事投稿は行われませんが、修正等は行います。

SSI や PHP でサイトの転送を行う。

ROUTE286 - トップ ウシの声(インターネット)
サイト連携 [RSS]

書込 - 2007年07/10/05 19:42

運営している Web サイトのドメインを新たに追加して、
そちらのドメインをメインに扱いたいという場合、
これまで使っていたドメインから新しいドメインへ転送する仕組みが必要です。

ちょうどそれを行いたいサイトが一つあるのですが、
ドメイン内にあるページ全てが対象ではないし、新旧共通の領域なので、
.htaccess では対処できなそうなんですよね。
該当するページに仕組みを設ける事になります。

ここでは仮に route286.com で参照した場合に r286.com の同じページへ転送する場合。
http://route286.com/nantoka.shtml なら http://r286.com/nantoka.shtml という感じですよ。
JavaScript だとこんな感じじゃなかいかと思いますが……普通は head に入れます。

<script language="javascript" type="text/javascript">
if (top.document.domain != "route286.com") {
 top.location.replace(document.URL.replace(document.domain, "r286.com"));
}
</script>

でも Web サーバ の設定によっては正常に動作しなかったり、
そもそも JavaScript は動作の有無を設定できるので理想的ではないですよね。

考え直してみたところ……あ、SSI で良いんじゃないかと。
該当のサイトは SSI を使えるようにしていたのです。それなら head 内に……

<!--#if expr="$SERVER_NAME = route286.com" -->
<meta http-equiv="refresh" content="0;url=http://r286.com<!--#echo var="REQUEST_URI"-->">
<!--#endif -->

とするわけです。route286.com を用いているドメインであれば
HTML の meta タグを出力してブラウザに移動を行わせるのです。
meta タグでの動作は現在のブラウザではほとんど使えますので……
REQUEST_URI でいけると思うのですが、DOCUMENT_URI や SCRIPT_NAME でないとダメな環境もあるかもしれません。
または、全く別の構成になっているならその URL を記載してしまっても良いわけです。

……ん? 家は PHP を使ってるって?
これならもっと簡単に実現できますよ。頭にこんな感じ。

<?php

if ( $_SERVER['SERVER_NAME'] == "route286.com" )
{
  header ( "HTTP/1.1 301 Moved Permanently" );
  header ( "Location: http://r286.com" . $_SERVER['REQUEST_URI'] );

  exit;
}

?>

こちらは http ヘッダの Location を用いた例。理想的な記述ですね。
REQUEST_URI ではなく SCRIPT_NAME や PHP_SELF を用いないといけない環境もあるかもしれません。
こちらもページ構成が変わっているのであれば、URL をフルで記載するのもありです。
HTTP/1.1 301 Moved Permanently は「今後はこっちを参照して下さい」という感じでしょうか。
これを付けないと「一時的に移しています」となってしまいます。

サーバを移して別々の領域になっているとか、全体が対象とかいう形だと
.htaccess とかでも良いんでしょうけどねぇ〜ううむ……

コメント・トラックバック ( 0 )

トラックバックURL: http://r286.com/katari/677
(日本語・文字コード自動判別)
トラックバックを正常に行っていないものや悪質性があるもの等は編集・削除する場合があります。
逆に内容の良い記事からのトラックバックや興味を持ったコメント等は
2 8 6 (旧名 ADMIN @ ROUTE286)がツッコミを入れている事があります。
ROUTE286 上で公開されなくない返事や運営者へのお問い合わせ等は こちらのフォーム を用いて下さい。
以下のフォームはコメントでの利用ははもちろん、
トラックバック機能がない blog で以下のフォームをトラックバック代わりにしていただいても結構です。



表題 / 題名


概要 / 内容


サイト(ウェブログ)URL 省略可


サイト(ウェブログ)名 / 名前


「route/677」を半角で入力して下さい





ROUTE286 はオリジナルのシステムで動作しています。
Presented by ROUTE286. ROUTE286 トップ お問い合わせ