.htaccessの301リダイレクトで、特定のディレクトリを除外する方法
サイトやページの恒久的な移転を示す301リダイレクト。
このリダイレクトは.htaccessで指定するのが簡単です。
しかし、特定のディレクトリは転送したくない、という場合もあります。
例えば、
http://www.old.com を http://www.new.com にリダイレクトしたい。
しかし、http://www.old.com/ex/ は除外し、リダイレクトせずアクセス可能にしたいという場合です。
この場合、.htaccessに
Redirect permanent / http://www.new.com/
と記述すると、旧ドメインのトップページと共に/ex/ディレクトリも新ドメインへ転送されてしまいます。
/ex/ディレクトリを除外するには以下のように記述します。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/ex/)
RewriteRule ^$ http://www.new.com/ [R=301,L]
このように記述すると、/ex/ディレクトリへのアクセスを保持したまま、旧ドメイントップページは新ドメインへリダイレクトできます。
301リダイレクトは、フォルダごとページごとに対になっていることが望ましいので、ページごとに指定するのがベストです。
RewriteRule ^old/old.html$ http://www.new.com/new.php [R=301,L]
丁寧に指定すると、ページランクも無駄なく移動できます。
リダイレクトを指定したなら、レスポンスヘッダを確認しておきましょう。
http://web-sniffer.net/URLを入力し、「HTTP Response Header」が「Status: HTTP/1.1 301 Moved Permanently 」になっていれば設定成功です。