業務上で取引先からSEO的なサイト引越(ドメイン変更)に関する質問があったので
記憶を確かめがてら、書き綴ってみようと思います。
判りやすく書く予定ですが今回は具体的作業例を記述するので少し専門的な内容になるかもしれませんけどご了承ください。

サイト移転の際に特に注意すべきは、リダイレクトを使うのでスパム判定されないようにすることが一番大切であり。
確実に移転先にサイトステータス(ページランク等)を受け継ぐように設定すると言うことです。

まず間違い易いのは301リダイレクト(301Redirect)を勘違いしてる場合が多いと思います。
システムを知らないホームページ製作会社では、まれに勘違いされてるケースも見受けます。

よく勘違いしてるケースとして
META Refreshを利用したり
JavaScriptを利用したり
でリダイレクトを行ってる場合です。
例:「サイトは移転しました○秒後に自動でページ移動しない場合は○○サイトはココをクリックしてください。」等の表記してる移転方法です。
(※検索エンジンによっては秒数が0秒なら301、整数秒なら302リダイレクトとみなす。と、してる場合もありますけど・・・!?)

上記方法では、headerで301 Moved Permanentlyでは無く 200 OKが返されてしまいます。

301Redirectは、htmlファイルに記述するのではなく.htaccessに

Redirect 301 / http://新URL/

と記述するのが簡単です。

PHPファイルを利用してる場合は

<?php header("HTTP/1.1 301 Moved Permanently"); header( "Location: http://新URL/" ); ?>

と記述します。

個別にドメイン以下の総ての移転ディレクトリーに.htaccessを設置する必要はありません。
下位のURLを直入力しても総て移転先にリダイレクトしてくれますので、ページ丸ごと移転が簡単に1つのファイルで完結します。

リダイレクト先やリダイレクト元を任意に設定する方法が検索しても見当たらなかったので以下を掲載しておきます。 リダイレクトの応用的な使い方です。

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^old.domain [nc]
rewriterule ^(.*)$ http://new.domain/$1 [r=301,nc]

と記述するのが良いでしょう。
こちらの方法なら特定のページのみをリダイレクトしたり
旧ドメインの全ページを任意の好きなページにリダイレクトしたり
色々と応用することができます。

当サイトでもドメイン→www付ドメインのリダイレクトに利用してます

http://idal.jp/hoge/hoge.../hoge... ドメイン以下全部を
http://www.idal.jp/ (トップページ)にリダイレクトしてます。

トップページにSetするときは4行目の$1を削除
特定のページを指定する場合はページの絶対パスで指定するだけです

※具体的記述方法を載せて欲しいと要望を受けたので以下が実際の記述
http://idal.jp/...⇒http://www.idal.jp/ へ301してます。
赤字部分をご自身のドメインに読み替えて下さい。

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^idal.jp [nc]
rewriterule ^(.*)$ http://www.idal.jp/ [r=301,nc]

————————————————

サイトの移転作業とページランクの復帰が終わっても
従前に貼った外部リンクを辿って検索エンジンは旧URLを巡回します。
完全に移転が完了したのであれば移転完了宣言をする必要があります。

特にBing(旧Msn)のBotにはリダイレクトを続けるとスパムと判定されてしまうのか理由は判りませんが、新サイトがまったくキャッシュされない事態も起こります。

宣言と言っても簡単なことで
具体的には
headerで404Not Foundを返すだけです。
ファイルを消すだけなので404Not Foundを失敗する人は居ないと思いますが、サーバー設定がindex ofになってる場合はindexファイルを削除してもファイル一覧が表示されて200okになってしまいます。

.htaccessに

Options -Indexes

と記述してindex of(ファイル一覧)を隠す。
又は、

ErrorDocument 404 /errordocs/notfound.html

と記述してNotFoundを返すか

PHPファイルを利用してる場合は

<?php header("HTTP/1.1 404 Not Found"); ?>

と記述しときましょう。