サイトやページの恒久的な移転を示す301リダイレクト。
このリダイレクトは.htaccessで指定するのが簡単です。
しかし、特定のディレクトリ(下層フォルダ)は転送したくない、という場合もあります。
例えば、http://www.old.com を http://www.new.com にリダイレクトしたい・・
しかし、下層フォルダはリダイレクト除外し、アクセス可能にしたいという場合です。
例:http://www.old.com/ex/ この場合は下層フォルダの/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/ディレクトリ(www.old.com/ex/)へのアクセスはこれまで通り保持したまま、旧ドメイントップページ(www.old.com)は新ドメイン(www.new.com)へリダイレクトできます。
また、301リダイレクトはフォルダごと・ページごとに対になっていることが望ましいので、ページごとに指定するのがベストです。
例として、old.htmlをnew.phpに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 」になっていれば設定成功です。
「.htaccessの301リダイレクトで、特定のディレクトリを除外する方法」への2件のフィードバック