• ベストアンサー

.htaccessで特定URLからのアクセス拒否

かなり困った場所からサイトインデックスへ リンクを貼られていることに気づき、急いで .htaccessを使ってそのURLからのアクセスを拒否しようとしたのですが、 機能せず困っています。 どなたかアドバイス頂けると嬉しいです。よろしくお願いいたします。 ●「.htaccess」「アクセス拒否」「拒否」などの検索でひかっかる  関連サイトさんは、ある程度見て回ったと思います。 ●サーバ:ロリポップ ●特定IPホスト拒否、自作エラーページなどは正常に機能しました。 ●拒否したいURLはhttp://付、なし、両方試したのですが駄目でした。 ●パーミッション:604 ●index.htmlと同じ階層にファイルをおいてあります。 ●拒否したい相手の鯖はFC2です。 .htaccess内には現在下記のように記述してアップしてあります。 ↓は改行部分です。 -------------------------------------------------------- SetEnvIf REFERER "xxxxxxxxx.com" Ref1↓ ↓ Order Allow,Deny↓ Allow from all↓ Deny from env=Ref1↓ ↓ ↓ ErrorDocument 404 /404.html↓ ↓ -------------------------------------------------------- 以上の状況なのですが。 何かしら私のミスなのか。 それとも、サーバによって使える指示使えない指示などがあったりするのか。 鯖によっては他になにか記述すべきものがあるなど・・。 .htaccessについての知識がほぼ皆無なので 一体どの原因で、機能しないのかの判別すらつけられていない状態です。 その判別だけでも出きれば、調べたり、他の対応を探すなど 今後のどう行動するべきか判断できそうなので、 そこだけでも何かアドヴァイス頂けると非常に助かります。 分りづらい説明で申し訳ないですが、宜しくお願いいたします。

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

  • ベストアンサー
回答No.1

判る範囲でだけ、、、 一旦Allow とDenyを逆に記述しxxxxxxxxx.comかジャンプしたばあいのみアクセス出来るか確認してください あと、セキュリティSOFTを使っていた場合REFERERは吐かない場合も多いので、 その場合REFERERを使った制限は.htaccessにしろCGIにしろ無効になりますね。 http://www.shtml.jp/htaccess/referer.html http://service1.symantec.com/SUPPORT/INTER/nisjapanesekb.nsf/jp_docid/20021020160209947 >サーバによって使える指示使えない指示などがあったりするのか。 ApacheでSetEnvIf が.htaccessで有効になったのは1.3.13以降だそうです http://www.apache.jp/docs/mod/mod_setenvif.html#setenvif Apacheのバージョンを調べるにはTelnetで80アクセスするとか又は、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2048321 の#2に書いたようなCGIを設置してみれば判ります。 あとはAllowOverrideの設定もありますが AllowOverride All=>全部有効 AllowOverride None =>全部無効 それ以外(一部機能のみ許可)=>許可されていない機能を記述するとUAアクセス時にServerErrorになる ので、この件の場合はAllowOverrideに関してはOKかと

m23junk
質問者

お礼

こちらでアドバイス下さった皆様にまとめてお礼させていただきます。 合同ですいません。 皆様とても丁寧で親切なご回答本当に有難うございました。 皆様の回答を色々読ませていただき試した結果。 どうやら一番初歩的なセキュリティソフト的な問題だったようで、成功はしていても私の閲覧環境では無効になっていたようでした。 本当に初心者的なことでこちらに質問してしまって本当に申し訳ありませんでした。 でもこちらで色々アドバイス頂けたことで そのミスに気づけたので、とても助かりました。 有難うございます!!

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

まだ解決していませんか? ならば環境変数Ref1 と 同じくHttp_Refererを表示させてみてください。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2048321 の#2で書いたのは環境変数一覧を表示するcgiですが SetEnvIf REFERER "xxxxxxxxx.com" Ref1 が正しく機能していれば $ENV{'REF1'} = 1 と言う行が表示されるはずです サイトインデックスと言うことですので手順を書いておきます。 1.同じ階層に環境変数一覧CGIをenv.cgiという名前で設置し、 まずは直接アクセスして普通に環境変数が表示されることを確認 2.index.htmlなりをSSI有効にしてページ下部に <!-- <!--#exec cgi="./env.cgi"--> --> (ページ上に表示させたくない場合です。) と記述する 3.件のリンク元のリンクをクリックして 先ほどのindex.htmlにジャンプしてページソースを見る 4.ENV{'HTTP_REFERER'} と言う項目が無い場合は  ブラウザがHTTP_REFERERを吐いていないと言うことです 5.ENV{'HTTP_REFERER'}=http://xxxx.com/ のように予想通りのREFERERを吐いているのに ENV{'REF1'} と言う項目が無い場合は .htaccessのSetEnvIf REFERER "xxxxxxxxx.com" Ref1 行が機能していない、マッチングしてない という事です。 6.ENV{'REF1'} =1 と表示される場合は(403になっていないと言うことですが) SetEnvIf REFERER "xxxxxxxxx.com" Ref1 は正しく機能しているが  Deny from env=Ref1 が機能していないと言うことです

すると、全ての回答が全文表示されます。
  • 123isao
  • ベストアンサー率54% (186/341)
回答No.2

サイトインデックスというのは/で終わったURLでファイル一覧が表示されてしまうことでしょうか? その場合はOptions -Indexesの一行を入れれば見られなくなります。 サーバのロリポップも記述している内容も問題ないと思います。 もしかして下の階層のディレクトリに.htaccessファイルがあって上書きされているのではないですか?

参考URL:
http://htaccess.pasoa.com/
すると、全ての回答が全文表示されます。

専門家に質問してみよう