サーバサイドリダイレクトの設定についてですが、URLを「www」あり、「index.html」ありに統一する場合の .htaccess の表記内容と、正しく機能しているかの確認方法を教えてください。

回答の条件
  • 1人2回まで
  • 登録:2009/12/04 13:33:22
  • 終了:2009/12/09 12:53:41

ベストアンサー

id:y-kawaz No.1

y-kawaz回答回数1421ベストアンサー獲得回数2262009/12/04 15:38:29

ポイント60pt

こんな感じでしょうか。

RewriteEngine on
# wwwありに統一
RewriteCond %{HTTP_HOST} !=www.example.jp
RewriteRule (.*) http://www.example.jp/$1 [R,L]
# index.htmlありに統一
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}/index.html -f
RewriteRule ^(|.*/)$ /$1index.html [R,L]

■確認方法

ここで、www2.example.jp や example.jp や 10.0.0.1 などが www.example.jp を同じドキュメントルートに設定されているとします。

  • もし index.html が無くて 404 になってもよいのでリダイレクトさせちゃいたい場合は、上記の設定から以下の行を削除してください。
RewriteCond %{REQUEST_FILENAME}/index.html -f
id:hamocha

ありがとうございます!

2009/12/04 15:46:06
  • id:b-wind
    御自身で理解している内容はどの程度でしょう?
    間違っててもいいのでこれでどうだろうと言う内容を書いてみて欲しいのですが。
  • id:hamocha
    情報のソースとしては下記サイトを参考にしています。

    【301リダイレクトを使った「WWWあり」と「WWWなし」の統一】
    http://www.suzukikenichi.com/blog/integrating-www-and-non-www-by-301-redirect/

    【index.html「あり・なし」のURL正規化 – 301リダイレクト応用編】
    http://www.suzukikenichi.com/blog/canonicalization-of-indexhtml-and-non-indexhtml/

    前者は「www」ありのケースの説明がありますが、後者は「index.html」なしの場合の説明になっています。
    これを単純にくっつけた上で、「index.html」ありの状態で動作するようにしたいのですが、これでどうだろうという内容を書いてみると…

    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^sample\.com
    RewriteRule ^(.*)$ http://www.sample.com/$1 [R=301,L]
    RewriteCond %{THE_REQUEST} ^.*/
    RewriteRule ^(.*)$ http://www.example.com/index.html$1 [R=301,L]

    でしょうか…(ホントに分かりません)

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません