301リダイレクトにおいて、.htaccessの記述がわかりません。

サイトを閉鎖するので、すべてのページへのアクセスをTOPページに集め、
サイトは終了しました、としたいのです。
.htaccessへの記述を教えてください。

いくつか試したのですが、無限ループになってしまいます。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/05/14 20:25:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:Committeeman No.1

回答回数153ベストアンサー獲得回数19

ポイント27pt

新しい引越し先があるならば次のように301を使う

Redirect permanent / http://引越し先


閉鎖の場合はループしてしまうのでシンプルに404を使うほうがいい

ErrorDocument 404 /404.html

id:y-kawaz No.2

回答回数1422ベストアンサー獲得回数226

ポイント27pt

こんな感じでどうでしょう?

RewriteEngine on
RewriteCond %{REQUEST_URI}%{QUERY_STRING} !=/
RewriteRule .* /? [R=301,L]

ポイントを簡単に説明すると以下のような感じです。

  • 無限ループにならないよう、/ へのアクセス以外を / にリダイレクトすれば良いので、RewriteCondで「REQUEST_URI が/じゃない」という条件をつけています。
  • ただ、%{REQUEST_URI} のチェックのみだと /?foo=bar の様なURLだとリダイレクトしてくれないので%{QUERY_STRING}が空であることも同時にチェックしています。
  • 最後にRewriteCond の第2引数部分ですが、/ としておくと、例えば /foo?a=123 は / ではなく /?a=123 にリダイレクトされてしまう(RewriteCondは何もしないとクエリ文字列をそのまま残す)ので、それを防ぐために /? としています。(RewriteCondは第2引数に?が含まれていると元のクエリ文字列をなかった事にしてくれます)
id:okzirushi

なんかいけそうな感じですね。ただ、私、まだまだ素人なものですので、

RewriteEngine on

RewriteCond %{REQUEST_URI}%{QUERY_STRING} !=/

RewriteRule .* /? [R=301,L]

いただいたこちらの場合、例 http://aaa.bbb.com/ みたいなURLの場合、

上記のいただいた記述はどうなるんでしょうか?

宜しくお願いします。

2010/05/07 21:25:34
id:hanako393 No.3

回答回数1142ベストアンサー獲得回数87

ポイント26pt

TOPページ以外は削除して、以下のようにされたほうがよいと思います。

ErrorDocument 404 http://トップページのアドレス

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 Chakuwiki 114 87 5 2010-05-11 18:27:07

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません