.htaccess Refererによるアクセス制限で更新したときについて

このQ&Aのポイント
  • .htaccess Refererによるアクセス制限を行い特定のサイトからのアクセスを拒否する方法について説明します。
  • 更新したときにIE7では表示されてしまい、Firefoxではエラーを返すことができますが、IEでも同じようにエラーを返す方法を知りたいです。
  • また、403エラーを404エラーとして返す方法についても説明します。
回答を見る
  • ベストアンサー

.htaccess Refererによるアクセス制限で更新したときについて

.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?StatusCheck=ONを参考にしました。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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.php
chelucyxxx
質問者

お礼

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

その他の回答 (1)

回答No.1

結論から書きますと 全くご希望通りのことは難しいようです 代替案としては 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を吐いてしまうため おっしゃるような現象が出ます    工夫して見ましたが 上記の代替案以外の方法は思い浮かびませんでした

chelucyxxx
質問者

補足

回答ありがとうございます。 1の方法と2の方法があると解釈してよかったでしょうか? 手順だったり解釈違いでしたら申し訳ありません。 特定のサイトからのアクセスを404を返して存在しないと偽りたいので1の方法を試してみようと思うのですが >cookieを発行して setenvifで振り分け~expire切れまで全くアクセスできない それが何を示しているのか具体的にどのように施せばよいのかと把握できない状態です。 そんなかんじなので私に施すのが無理そうなら現状でもいいかな、程度に思ってます。 説明の方とても分かりやすく、あぁなるほどと思うことができました。 色々と工夫を施してくださりありがとうございました。

関連するQ&A

  • .htaccessのアクセス制限のことで

    レンタルサーバーを利用してブログをやっております。 最近、海外からのスパムが多くなり、.htaccessを設置してアクセス制限をかけようかと思い.htaccessファイルを設置しましたらページそのものが見れなくなってしまいました。 order deny,allow deny from all allow from .jp SetEnvIf Referer "拒否ドメイン" deny_ref order allow,deny allow from all deny from env=deny_ref このような書き方は間違えているのでしょうか。 こちらのやりたい事としましては、海外からのアクセスを拒否、日本でも一部のドメインの拒否、一部のサイトからの直リンク拒否です。 どうそ、よろしくお願いします。

  • .htaccessについておしえてください。

    外部からjsファイルを直リンクなどで、見られないようにできないかと考えています。.htaccessで特定のサイトからのみ参照を許可するという記事を見ました。 例えばヘテムルのサーバでhttp://abc.heteml.jp/def/index.htmlからの参照を許可するのに、.htaccess に以下のように書きました。 SetEnvIf Referer "http://abc.heteml.jp/def/index.html" allow_ref SetEnvIf Referer "^$" allow_ref order deny,allow deny from all allow from env=allow_ref .htaccess については全然分かっていません。記事に載っていた内容を少し変える程度なので、詳しく教えていただきたいと思い、投稿しました。jsファイルを見られないようにすることはできるのか?また、.htaccessの参考サイトなどあれば教えてください。

  • .htaccess でのアクセス制限

    http://www.renewda.com/detail_282.html にある方法で、下記のような .htaccess を使ったアクセス制限を試みました。 (ドメインは架空です) SetEnvIf Referer "^http://www\.abc\.com" ref_chk order deny,allow deny from all allow from env=ref_chk アクセス制限の対象となるフォルダには、js ファイル (xxx.js とします) があります。 この xxx.js に、次の各ページを開いた状態で、 URL をブラウザに直接入力してアクセスを試みました。 A. 他ドメインのページ B. www.abc.com 内の、script タグで xxx.js を読み込んでいるページ C. www.abc.com 内の、xxx.js を読み込まないページ 結果は、A と C でアクセスが拒否されましたが、 B ではアクセスできてしまいました。 B の場合でも (script タグでの読み込み以外の) アクセスを拒否するようにする方法はあるでしょうか。

  • .htaccessで複数設定するには?

    .htaccessを使って「特定のIPアドレス・ホストからのアクセスを拒否」と 「特定のリンクからのアクセスを拒否 」の2つを一緒に設定したいのですが、 どうすればいいのでしょうか? 単独での書き方はそれぞれ調べて分かったのですが、1つにまとめての記述方法が分かりません。 --------------------------------------------------- order allow,deny allow from all deny from ●● deny from ○○ deny from ▲▲ deny from △△ SetEnvIf REFERER "http://○○○.com/" Ref1 Order Allow,Deny Allow from all Deny from env=Ref --------------------------------------------------- といった感じに記述したものの、全く動作してくれません。 ご存知の方いらっしゃいましたら、宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • .htaccessの更新とIP拒否

    検索避けの為、meta/robots.txt/.htaccessを入れています。 今入れてるのは以下の.htaccessですが SetEnvIf REFERER "search.yahoo.co.jp" Ref1 SetEnvIf REFERER "google.co.jp/search" Ref2 SetEnvIf REFERER "excite.co.jp/search" Ref3 SetEnvIf REFERER "infoseek.co.jp/OTitles" Ref4 SetEnvIf User-Agent "Googlebot" Ref5 SetEnvIf User-Agent "Slurp" Ref6 SetEnvIf User-Agent "msnbot" Ref7 Order Allow,Deny Allow from all Deny from env=Ref1 Deny from env=Ref2 Deny from env=Ref3 Deny from env=Ref4 Deny from env=Ref5 Deny from env=Ref6 Deny from env=Ref7 入れて数ヶ月は検索結果に全く出なかったので「あー効いてるかな?」と思っていたのですが、先日yahooでにて自サイト名で検索かけたら一番上にヒットしました。 一応、そこから飛んでも403エラーが出て直接は来れないようになってはいますが…。クローラーに拾われるのは避けられてないってことですよね。 .htaccessの記述は最初のままなんですが、これって記述をたびたび変更したほうが良いのでしょうか?(たとえば順番や名前を変えるなど) 記述やクローラーの最新情報というものがなかなか見つからないので、けっこう前のデータを参考に作っているので…。 更にIPでも弾こうかとも考えていますがどのように表記するのが効果的でしょうか?

  • htaccess??

    .htaccessを設置したいのですが、.htaccessではいろいろな条件を拒否したり許可したりできますよね? たとえば、指定したホストからのアクセスを拒否したい、と同時に画像の直リンクを防ぎたい。という場合、どう表記すればいいのでしょうか? order allow,deny deny from all deny from xxxxx(拒否したいホスト) deny from xxxxx SetEnvIf REFERER "xxxxx(自サイトのURL )" Ref1↓ Order Deny,Allow↓ Deny from all↓ Allow from env=Ref1↓ AddHandler cgi-script htaccess とこんな感じでつらつらと並べていいものでしょうか? 初歩的な質問でごめんなさい。 良かったら教えてください。

  • htaccessで参照元制限

    参照元によるアクセス制限で、許可する参照元をhttp://domain.com/にし、許可する拡張子を.htmlにしたいと考えています。http://domain.com/*.htmlというような書き方はできないのでしょうか? SetEnvIf Referer "^http://domain.com/" ref_ok order deny,allow deny from all allow from env=ref_ok

    • ベストアンサー
    • HTML
  • .htaccess の書き方について教えてください。

    こんにちは、質問させてください。 webサイトを運営しており、.htaccessによるアクセス規制を検討しています。 下記のように複数のアクセス規制をしたい場合、どのように書けば良いでしょうか? ○特定IPアドレスからのアクセス ○プロキシ経由でのアクセス ○特定URLからのアクセス 過去ログ等を検索してみて、現在、以下のようなソースにしています。 ------------------------------------- #特定IPとプロキシ経由の拒否 order allow,deny allow from all deny from ***.***.**.*** order deny,allow deny from all allow from .jp allow from .net allow from .com #特定アドレスからのアクセス拒否 SetEnvIf Referer "http://sample.url.com" ref01 order Allow,Deny Allow from all Deny from env=ref01 ------------------------------------- プロキシ経由の場合、すべてを弾くのは難しいと思いますが… 何か他に良い書き方がありましたら、アドバイスをお願いします。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • .htaccessの記述

    さくらのレンタルサーバを使っています。 SetEnvIf User-Agent "Googlebot" shutout1 SetEnvIf User-Agent "Slurp" shutout2 SetEnvIf User-Agent "msnbot" shutout3 SetEnvIf Referer "google\.co\.jp" shutout4 SetEnvIf Referer "yahoo\.co\.jp" shutout5 SetEnvIf Referer "google\.com" shutout6 order allow,deny allow from all deny from env=shutout1 deny from env=shutout2 deny from env=shutout3 deny from env=shutout4 deny from env=shutout5 deny from env=shutout6 (改行) 新しくつくったページですので検索ロボットにはまだ拾われていないのでGmailで実験しましたが、http://mail.google.com/mail/~ からアクセスできてしまいます。アスキーモードで転送し、ファイル名もOKです。何がダメなのでしょうか… あと、「SetEnvIf Referer "google" shutout*」と記述すれば「google」を含むアドレスからのリンクはまとめてすべて拒否できますか? よろしければチェックをお願いします。

    • ベストアンサー
    • HTML
  • 携帯に対応可な.htaccessのアクセス制限(リファラ)について

    あるディレクトリ内のページを自サイト内のリンクだけ閲覧可にし、直リンクを避ける為に対象フォルダへ以下のような記述にて.htaccessを設置しました。 SetEnvIf Referer "^http://www\.○○○\.com" ref_ok SetEnvIf Referer "^http://○○○\.com" ref_ok order deny,allow deny from all allow from env=ref_ok PCアクセスはこれで大丈夫です。しかし、携帯ではドコモで自サイト内のリンクからもアクセスができません。一方でソフトバンクでは大丈夫でした。それ以外の携帯キャリアからは確認が取れていません。 もし、.htaccessで全ての携帯キャリアにも対応できる記述方法か別の手段で良い方法があれば教えてください。 以上、よろしくお願いします。

    • ベストアンサー
    • HTML