電子書籍の厳選無料作品が豊富!

毎日更新している自分の画像を、掲示板サイトや直リンクサイトで「画像url」で書かれてしまった場合に対する対処策で悩んでます。

--------------------------------------------

http://www.○○○.com/koshin/mainiti6-26.jpg
--------------------------------------------

画像リンクのクリックを、トップページに転送することはできないのでしょうか。

防止策のあるcgiとかがあれば紹介してほしいです><

A 回答 (7件)

#1ですが 具体的に書きます


http://www.○○○.com/ がtoppageで
http://www.○○○.com/koshin/ に.htaccess をおく場合

###この↓から .htaccessの内容
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www.○○○.com
#RewriteCond %{HTTP_REFERER} .+
RewriteRule ^.*$ http://www.○○○.com/ [R=301,L]
## この↑まで .htaccess

これで 通常のブラウザではRefererに http://www.○○○.com が入っていないとアクセス出来ません

ただしアクセスした人がセキュリティSOFTを使っている場合REFERERをはかない場合が有ります
そうすると、ちゃんとあなたのページのリンクを辿っても制限に引っかかります
それを解除するには 3行目の 行頭の# を消してください
 ただ、その場合でも直リンクは防げますが URL欄に直接画像のURLを入れられると防げません

それから .htaccessを toppageに置くのなら
4行目を RewriteRule ^koshin http://www.○○○.com/ [R=301,L]
に変えます
##### rewriteの説明は以上

CGIでやる方法も有るには有りますが
URLを変えないでとなるとかなり面倒です 一応手順を
方法1 拡張子 .jpg をCGIとして設定
  手順1.#2さんの書かれたような内容のcgiを書き file名をmainiti6-26.jpg などとします
  手順2. koshin/.htaccess に
  AddHandler cgi-script .cgi .jpg
   などと書けば 拡張子 .jpgもCGIとして動きます

方法2. CGI+rewrite
  手順1. koshin/に 適当なcgiをおきます(仮に test.cgi とします)  
    test.cgi の内容も #2さんの書かれたような内容ですが
    Refererが正しければ=>$ENV{'QUERY_STRING'} を読み込んで それに対応した画像を表示する
     (画像自体は 直接アクセスできない場所においておき CGIから読み込むことだけ出来る)
     正しくなければ Toppageへ飛ばす
   手順2. .htaccessに
RewriteEngine on
RewriteCond %{REQUEST_URI} !test.cgi
RewriteRule ^(.*)$ /koshin/test.cgi?$1 [L]
     と書きます。

これで
http://www.○○○.com/koshin/mainiti6-26.jpg
というURLにアクセスして URL欄はそのまま変わりませんが
実は↓
http://www.○○○.com/koshin/test.cgi?mainiti6-26.jpg
へのアクセスにすり替わって test.cgi にクエリーを渡せる仕組みになっています

### しかし rewrite 一つで簡単に出来るものを
わざわざ CGIまで使うのが賢明とは思えません
また方法1 だと画像fileのfile名が変わるたびに別のcgiを用意しなくてはいけませんし

なので .htaccess が許可されていない状況のときだけ
CGIを使って  URLは変わってしまいますが
http://www.○○○.com/koshin/test.cgi?mainiti6-26.jpg <=QUERY_STRINGで引数渡し
または
http://www.○○○.com/koshin/test.cgi/mainiti6-26.jpg <=$ENV{'PATH_INFO'}で引数渡し
などの方法を検討するべきかと思います。
    • good
    • 0
この回答へのお礼

こんにちは^^

.htaccessを使用してみたら、いくやってもエラーとなるのでサーバー会社に問い合わせてみましたところ、.htaccessは使用できないとのことでした。

早速違うサーバー会社に変更して、.htaccessにて試してみました。

結果は大満足の大成功でした!

ありがとうございます^^

自分でも色々検索して色々な手段を考えてやってみましたが、やはりスキルがないので途方に暮れてました・・

本当に感謝しておりますm(__)m

お礼日時:2008/06/29 14:19

この質問の場合は ”画像リンクのクリック” と有りますので


よそのページから <A HREF="http://self.example.com/image.jpg" > hoge画像</A>
と言う状況を想定してとなるでしょうね

<IMG SRC で呼ばれた場合は おそらく#6さんの言われたようになると思います。

よそのページから勝手にIMGタグで呼ばれた場合のことも考慮するなら
TOPPAGEに飛ばすのではなく
「**.example.com 以外からの画像呼び出しは禁止です」
などと書かれた画像を表示するのも一つの手かも知れませんね
    • good
    • 0

> ANo.4


> print "Location: ​http://www.​○○○.com/koshin/\n\n";
> でいけそうな気がしますが、どうでしょう。


http://www.example.com/
index.html
<img src="http://self.example.com/image.jpg">
と書かれたHTMLファイルに対して、

この画像をクリックするとhttp://self.example.com/に移動する、つまり
http://www.example.com/index.html
<a href="http://self.example.com/"><img src="http://self.example.com/image.jpg"></a>
に書き換えることだと思ってましたが。。。


<img>のsrcでLocationヘッダを使うと、
<img src="http://self.example.com/">
と同じになるんじゃないかと思ったわけですが。
    • good
    • 0

>talooさん


>> 画像リンクのクリックを、トップページに転送することはできないのでしょうか。
>こういうことはできません。

print "Location: http://www.○○○.com/koshin/\n\n";
でいけそうな気がしますが、どうでしょう。
    • good
    • 0

表示させないようにするのは他の方の仰るとおり、アクセス禁止の処置で対応できますが、


他人のページ(HTML)を書き換えることはできませんので、
> 画像リンクのクリックを、トップページに転送することはできないのでしょうか。
こういうことはできません。
    • good
    • 0

CGIでなら、HTTP-REFERERというリンク元情報が使えると思います。


$ENV{'HTTP-REFERER'}で参照できますので、

#自分のサイトのURL
my $url = 'http://www.○○○.com/koshin';

if($ENV{'HTTP-REFERER'} =~ /^$url/){
#画像を表示する処理
}else{
#とっぷぺーじに飛ばす処理
}

みたいな感じで実装可能ではないかと思います。


HTMLの画像URLのリンクを
http://www.○○○.com/koshin/envchk.cgi?img=mainiti6-26.jpg
みたいに張り替える必要があると思いますが。。。
    • good
    • 0

.htaccessが使えるなら rewrite ですね


「.htaccess Rewrite 直リンク禁止」などで検索してみてください

教えてGoo内で検索するなら
http://oshiete.goo.ne.jp/search/search.php?statu …
です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!