>foo以下のディレクトリやファイルを指定する
この条件を逆手にとって、
「foo以下のディレクトリやファイルを指定する以外の場合は新サイトへ飛ばす」とした例
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !^foo/.+$ RewriteRule ^.* http://new.example.jp/? [R=301,L]
旧サイトのルート直下にhtaccessを設置する場合など、
RewriteBaseが不要(あるいは邪魔)な場合があります。
新サイト末尾の ? はパラメータを受け継がないという指定のため、
パラメータを引き継ぐ必要がある場合は ? を消します。
R=301はアクセスしてきた相手に対して、
「新サイトへの恒久的な移動」を知らせます。
R=301の効用としてはサーチエンジンの登録情報自動書き換えや、
旧サイトへの無用なアクセス減少などが期待できます。
上記に「実在しない場合も新サイトへ飛ばす」を加えた例
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !^foo/.+$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.* http://new.example.jp/? [R=301,L]
上記に「hoge」「fuga」を加えた例
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !^(foo|hoge|fuga)/.+$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.* http://new.example.jp/? [R=301,L]
・ファイル・ディレクトリの指定のない
http://www.example.jp/ へのアクセスはすべて
http://new.example.jp/ へリダイレクト
これはmod_rewriteではなくネームサーバのゾーン設定によって行います。
ご利用のネームサーバによって設定手順は異なりますが、たとえば「さくらレンタルサーバ」なら以下のようにします。
http://web.showjin.me/2011/12/sakuravps_dns.html
・特定ディレクトリfooの名前のみを指定した
http://www.example.jp/foo/ へのアクセスも
http://new.example.jp/ へリダイレクト
・ただしfoo以下のディレクトリやファイルを指定する
http://www.example.jp/foo/bar/ や
http://www.example.jp/foo/bar/xxx は
リダイレクトせずに旧ページを表示する
次のようにします。
コメント(0件)