PDA

View Full Version : 自作エラー画面とアクセス制限について


minami
2002/09/18, 05:59 PM
こんにちは。
自作エラー画面とアクセス制限について困っているので質問させていただきます。

今まで、.htaccessを利用して自作の404・403・500エラーページを設定していました。
今回不遇にも、とあるIPからのアクセスを制限しなければならず、今までの.htaccessにその旨を追加しました。
すると、アクセス制限は適用されたのですが、自作のエラーページの方が適用されなくなってしまいました…
.htaccessで複数の定義を含める場合には何か注意することはあるのでしょうか?
現在の.htaccessはこんな感じです。

AddHandler cgi-script htaccess

ErrorDocument 404 /404.shtml
ErrorDocument 500 /500.shtml
ErrorDocument 403 /403.shtml

order allow,deny
allow from all
deny from ***.**.

何卒宜しくお願いいたします。

ririka
2002/09/18, 06:04 PM
SetEnvIf REFERER "www.xxx.com/~xxx/" Ref1
SetEnvIf REFERER "www.yyy.jp/~yyy/" Ref2
SetEnvIf REFERER "www.zzz.com/~zzz/" Ref3
Order Allow,Deny
Allow from all
Deny from env=Ref1
Deny from env=Ref2
Deny from env=Ref3

ErrorDocument 403 /403.htm
ErrorDocument 404 /404.htm
ErrorDocument 500 /500.htm




と書いています。

kzhr
2002/09/18, 06:05 PM
AddHandler cgi-script htaccess
これはなんでしょ。

minami
2002/09/18, 06:13 PM
返信ありがとうございます。
kzhrさんの書き方を真似てみようと思います。

Originally posted by kzhr
AddHandler cgi-script htaccess
これはなんでしょ。
.htaccess自体の閲覧を拒否する為の文句らしいです。
そこまですることもないのかも知れませんが、一応^^;

kzhr
2002/09/18, 06:15 PM
いや、僕でなくてririkaさんかと。。。

それと、普通にやっていても、見えないはずなのですけれど。

minami
2002/09/18, 06:30 PM
Originally posted by kzhr
いや、僕でなくてririkaさんかと。。。
ぐは…
レス2つついていました…ririkaさん失礼しました。
ご指摘ありがとうございます。

ririkaさんの書き方を真似てみようと思ったのですが、
Originally posted by ririka
SetEnvIf REFERER "www.xxx.com/~xxx/" Ref1
Deny from env=Ref1
という書き方は特定のページからのリンクを禁止するもののようですね。
僕の場合は***.**.に続く全てのIPからのアクセスを制限したいので、そのままでは使えなさそうです^^:
アクセス制限設定→エラーページ設定の順で書いてみることにします。
返信ありがとうございました。
Originally posted by kzhr
それと、普通にやっていても、見えないはずなのですけれど。
むー、それについては自分もよく分かりません…
何か方法があるのかも知れませんが…

ririka
2002/09/18, 06:34 PM
お役に立てませんで、申し訳有りませんです。
元ネタは
http://goldendragon.xrea.org/
のサイト様です。

ara
2002/09/18, 07:41 PM
Originally posted by minami
.htaccess自体の閲覧を拒否する為の文句らしいです。
そこまですることもないのかも知れませんが、一応^^;
普通はサーバー側で.ht*****はdeny from all とされているはず。
ついでに言えば、".htaccess"は拡張子ではないので
AddHandler cgi-script htaccess
では反映されないと思います。

無効な設定を記述すると500エラーになります。
AddHandler cgi-script htaccess
↑これは削除しておいた方が無難かと思います。

後は、

order allow,deny
allow from all
deny from ***.***.

ErrorDocument 404 /404.shtml
ErrorDocument 500 /500.shtml
ErrorDocument 403 /403.shtml

と、記述の順番を変えてみてはどうでしょう。

minami
2002/09/19, 04:34 PM
返信ありがとうございます。
Originally posted by ara

普通はサーバー側で.ht*****はdeny from all とされているはず。
AddHandler cgi-script htaccess
では反映されないと思います。
そうですか…。余計な一文のようなので削除しました。
Originally posted by ara

後は、

order allow,deny
allow from all
deny from ***.***.

ErrorDocument 404 /404.shtml
ErrorDocument 500 /500.shtml
ErrorDocument 403 /403.shtml

と、記述の順番を変えてみてはどうでしょう。

ご意見ありがとうございます。
自分でもその方法を試そうと思っていたので今日試してみました。
araさんが仰られた書き方と全く同じなのですが、やはりエラーが反映されません・・・
皆さんは出来ていらっしゃるのでしょうか…?
それとも何か根本的な勘違いをしてるのでしょうか…

ririka
2002/09/19, 04:41 PM
今見ると、
エラー画面を見ることができますが
解決なさったのでしょうか?

minami
2002/09/19, 04:54 PM
ご返信ありがとうございます。
Originally posted by ririka
今見ると、
エラー画面を見ることができますが
解決なさったのでしょうか?
いえ、昨日の夜からいじっていないので解決していません。
現時点では…ですが。

根本的な勘違いをしている気がしてきたので、状況を詳しく書きます。

現在、.htaccessを利用して自作エラーページとIP単位のアクセス制限をしようとしています。
現在の.htaccessの中身は↑のaraさんが仰られている通りです。
ところがです。

制限をかけたIPからアクセスした時に、自作の403ではなくサーバデフォルト(?)のエラーが出てしまいます。

この部分勘違いしていますでしょうか???

制限されてないIPからアクセスした時の自作404などは反映されています。

これについては言葉が足らなかったかも知れません。すみません。
ひょっとして、この動作は正常ですか?
それとも自作の403ページを見せることは可能なのでしょうか?

ririka
2002/09/19, 05:10 PM
たぶんですが
ホスト拒否や、リンク拒否は自作のエラー画面ではないと思います。
私はリンク拒否をしている相手がありますが、
サーバーの白い画面に黒い英語の画面になってます。

たしか アクセスの権限がありません  って言う内容ですよね?

可能かどうかが判らないのに返信しましてすみませんです。

craft
2002/09/19, 05:13 PM
ちょっと思ったんだけどhtaccessで制限してるなかに403.shtmlがあるのなら
それにもアクセスできないんじゃないかなぁ...

ara
2002/09/19, 05:32 PM
Originally posted by minami

制限をかけたIPからアクセスした時に、自作の403ではなくサーバデフォルト(?)のエラーが出てしまいます。


public_html/ 直下に .htaccess を置いた場合、
拒否したホストからの閲覧は不可能ですよね。
と、なると、見せたい403.shtmlの閲覧も不可能

status:403が返る→403.shtmlを表示しようとする
→ホストは拒否されている→xreaの403画面が表示される。

こんな感じになっていると思います。

例えば、見られたくないモノ(掲示板のログとか)を、パーミッション
600にした場合には、ログにアクセスすると正常に403.shtmlが表示
されると思います。

もし、public_html/以下で自前の403を表示させたいなら…
403で表示したいファイルを別の領域に置いて、
.htaccess の記述を変える

ErrorDocument 403 http://****.****/403.shtml

又は、

特定のディレクトリを作って、

例 public_html/errors/ # ←エラードキュメントをerrorsディレクトリに
.htaccessのエラードキュメントは

ErrorDocument 403 /errors/403.shtml

errorsディレクトリに

allow from all

と書いた .htaccess を置く。

後者は動作確認済みです。
前者は自信がないです:(

minami
2002/09/19, 05:40 PM
craftさん、araさん、ご返信ありがとうございます。

どうやら、お二方にご指摘頂いたことが問題のようですね。
araさんの仰られている
Originally posted by ara

特定のディレクトリを作って、
例 public_html/errors/ # ←エラードキュメントをerrorsディレクトリに
.htaccessのエラードキュメントは

ErrorDocument 403 /errors/403.shtml

errorsディレクトリに

allow from all

と書いた .htaccess を置く。

という方法を試してみようと思います。
お二人ともありがとうございます。

少し気になったのですが、xディレクトリにはルートにおいた.htaccessは適用されないのでしょうか?
xディレクトリ以下でのエラーはXREAのエラーが出てしまうようです…^^;

ririka
2002/09/19, 05:42 PM
xディレクトリの中は無効になるようです。
私は、別途置いています。

minami
2002/09/19, 05:48 PM
ご返信ありがとうございます。
Originally posted by ririka
xディレクトリの中は無効になるようです。
私は、別途置いています。
なるほど、やはりそうですか。
xディレクトリはxディレクトリで.htaccessを設置すればよろしいのでしょうか?
試してみます。ありがとうございます。

minami
2002/09/20, 05:51 PM
多くの方にご返信頂きありがとうございます。

アクセス制限をかけた時に、相手側に自作の403が表示されない問題ですが、craftさん、araさんにご指摘頂いた通りの問題だったようです。
そこで、araさんの仰られた通り、

自作エラードキュメントを専用のディレクトリ(例:error)に入れる。
そのディレクトリの.htaccessに

allow from all

と記述。
ルートの.htaccessには、

order allow,deny
allow from all
deny from ***.***.

ErrorDocument 404 /error/404.shtml
ErrorDocument 500 /error/500.shtml
ErrorDocument 403 /error/403.shtml

と記述。

することで解決しました。ありがとうございました。
もう一つ。
xディレクトリ内でルートの.htaccessが反映されない問題ですが、ririkaさんの仰られた通り、

xディレクトリはxディレクトリで.htaccessを設置。

することで解決しました。ririkaさんありがとうございました。

多くの方のご返信、とても嬉しかったです。
ありがとうございました。