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

.htaccess Refererによるアクセス制限を以下のようにして行い特定のサイトからのアクセスを拒否するようにました。

SetEnvIf Referer "^http://www\.abc\.jp" ref_ng
order allow,deny
allow from all
deny from env=ref_ng

普通にhttp://www\.abc\.jpからアクセスしたときはちゃんと拒否してくれるのですがページを更新したときIE7だと表示されてしまいます。
Firefoxは更新してもエラーを返してくれるのですが…。
IEでもFirefoxと同じように更新してもエラーを返すようにできませんでしょうか?

ちなみに403を404として返すようにもしています

ErrorDocument 403 /hoge.php

http://questionbox.jp.msn.com/qa2628919.html?Sta …を参考にしました。

A 回答 (2件)

>1の方法と2の方法があると解釈してよかったでしょうか?


そうです 1の方法 または 2の方法です。

1の方法でしたら
まず ErrorDocument 403 /hoge.php で指定した phpでcookieを発行するのですが
setcookie("BadCookie", 403);
などの記述を追加して

.htaccess に
SetEnvIf Referer "^http://www\.example\.jp" ref_ng
SetEnvIf Cookie "BadCookie" ref_ng
## ↑この行追加
order allow,deny
allow from all
deny from env=ref_ng

これで 試してみてください。

参考URL:http://jp2.php.net/manual/ja/function.setcookie. …
    • good
    • 0
この回答へのお礼

丁寧にありがとうございます。
早速ためしてみたところ、上手くできて感動してしまいました!
こんなに簡単に解決できるなんて…。
本当にありがとうございました♪

お礼日時:2008/07/13 00:58

結論から書きますと 全くご希望通りのことは難しいようです


代替案としては
1.403のページで cookieを発行して setenvifで振り分け
 (但しcookieを受け取らないと駄目 またブラウザを再起動または expire切れまで全くアクセスできない)
2. Rewriteで 直リンク防止をして
RewriteEngine on
RewriteCond %{HTTP_REFERERI} !^http://hoge.example.com
RewriteRule ^/?.+$ / [R=302,L]
## 但しエラーメッセージは出ない 直アクセス時に はtoppageへ飛ばすだけ

説明:
 環境変数一覧表示のphpをErrorDocument で指定して見ました
 FireFOXの場合 ErrorDocumentで飛ばしたこと自体に対する Refererは出ませんが
 MSIE7の場合 ErrorDocumentで飛ばしたこと自体に対してもRefererを吐いてしまうため おっしゃるような現象が出ます
 
 工夫して見ましたが 上記の代替案以外の方法は思い浮かびませんでした

この回答への補足

回答ありがとうございます。
1の方法と2の方法があると解釈してよかったでしょうか?
手順だったり解釈違いでしたら申し訳ありません。

特定のサイトからのアクセスを404を返して存在しないと偽りたいので1の方法を試してみようと思うのですが
>cookieを発行して setenvifで振り分け~expire切れまで全くアクセスできない
それが何を示しているのか具体的にどのように施せばよいのかと把握できない状態です。
そんなかんじなので私に施すのが無理そうなら現状でもいいかな、程度に思ってます。

説明の方とても分かりやすく、あぁなるほどと思うことができました。
色々と工夫を施してくださりありがとうございました。

補足日時:2008/07/12 18:24
    • good
    • 0

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