人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Apacheのmod_rewriteについての質問です。

http://www.example.jp/というサブドメインを持つサイトを新しくhttp://new.example.jp/というサブドメインで運用する予定ですが、しばらくは旧サイトのコンテンツを残したまま運営を続けたいと思っています。下の三点の条件を満たすようにmod_rewriteの記述はどのようにすれば良いでしょうか?

・ファイル・ディレクトリの指定のない
http://www.example.jp/ へのアクセスはすべて
http://new.example.jp/ へリダイレクト

・特定ディレクトリfooの名前のみを指定した
http://www.example.jp/foo/ へのアクセスも
http://new.example.jp/ へリダイレクト

・ただしfoo以下のディレクトリやファイルを指定する
http://www.example.jp/foo/bar/ や
http://www.example.jp/foo/bar/xxx は
リダイレクトせずに旧ページを表示する

という設定になります。よろしくお願いします。

●質問者: lime2006
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●100ポイント

>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]

2 ● oil999
●100ポイント

・ファイル・ディレクトリの指定のない
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
リダイレクトせずに旧ページを表示する

次のようにします。

RewriteEngine On
RewriteBase /
RewriteRule ^/foo/$ http://new.example.jp/ [R=301,L]
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ