.htaccessから301リダイレクトをする方法をメモ

特定のページだけを301リダイレクト

特定のページだけを301リダイレクトする場合は
.htaccessに

redirect 301 /sample/page.html http://www.yahoo.co.jp
redirect 301 /page.html http://www.yahoo.co.jp

のように記述します。
※上記は
/sample/page.htmlにアクセスされたらhttp://www.yahoo.co.jpに飛ばす
/page.htmlにアクセスされたらhttp://www.yahoo.co.jpに飛ばす
といった感じです。

ドメイン自体のの301リダイレクト

サイトのドメインを移転したとき等には

RewriteEngine On
RewriteCond %{http_host} ^www.sample.com
RewriteRule ^(.*) http://www.sample2.com/$1 [R=301,L]

のように記述します。
※上記は、
www.sample.com に来たアクセスを www.sample2.com に飛ばす
(mod_rewriteがサーバにインストールされている必要があります)

特定のディレクトリ内を新ドメインにリダイレクト

たとえば、
http://old.com/abc/
というabcフォルダ内だけを一式新ドメインの
http://new.com/
というドメインに301リダイレクトしたい場合は、

Redirect permanent /abc/ http://new.com/

としてあげると、一括で301リダイレクトできるので便利です。
※ファイルの構成が同じ場合のみおすすめ

パラメータ付きURLの301リダイレクト

同じドメインで
http://redirect.com/abc/?abc=123456
のような?以降のパラメータ付きURLを
http://redirect.com/abc/
にリダイレクトしたい場合

RewriteEngine on
RewriteCond %{REQUEST_URI} abc/
RewriteCond %{QUERY_STRING} ^abc=123456$
RewriteRule ^(.*)$ /abc/? [R=301,L]

という感じでリダイレクトできます。

RewriteCond %{REQUEST_URI} abc/
の部分でパラメータより前の部分のパス。

RewriteCond %{QUERY_STRING} ^abc=123456$
の部分でパラメータを指定します。

httpからhttpsへの301リダイレクト

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

さくらサーバー等、一部サーバーでは記述が違いますが、
大体はこちらでOK。