htaccessで、サイト外から特定フォルダの画像ファイルにリンクされていた場合、それぞれの画像ごとのページへ転送する方法がわからず困っています。


具体的に書くと次のような画像アドレスがあり
http://www.example.com/abc/a.jpg
次のページでは上の画像のみが表示されるHTMLになっています。
http://www.example.com/abc/a.html

サイト外からa.jpgに直リンクされた場合、a.htmlに自動で転送されるようにしたいです。
※a.jpg以外にもb,c...とあり、画像ごとのhtmlに転送します。

htaccessの具体的な記述方法をお教えください。

回答の条件
  • 1人2回まで
  • 登録:2008/06/05 18:00:39
  • 終了:2008/06/05 20:23:21

ベストアンサー

id:kiryuu No.1

kiryuu回答回数16ベストアンサー獲得回数42008/06/05 19:35:22

ポイント60pt

Apache2で試してみました。

RewriteEngine on
RewriteCond  %{HTTP_REFERER} !www\.example\.com [NC]
RewriteRule (.*)(\.jpg)$ http://www.example.com/abc/$1\.html [R=301]

mod_rewriteが使えることが条件です。

RewriteCond %{HTTP_REFERER} !www\.example\.com [NC]

 HTTP_REFEREにwww.example.comが含まれていなければ、次の行を実行します。

 [NC]は大文字小文字を区別しません。

RewriteRule (.*)(\.jpg)$ http://www.example.com/abc/$1.html

 .jpgより前のパスが$1に入ります。

 http://www.example.com/abc/に$1と.htmlを足して転送先を生成します。

注意点として、

HTTP_REFERERは、あてにならないことがあります。

Norton Internet Security 2004ではHTTP_REFERERをブロックしていたようです(現行バージョンはわかりません)。

id:liser

できました。わかりやすい回答ありがとうございます!

2008/06/05 20:22:55

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

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

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

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

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