• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:有料のレンタルサーバを借りたのですが…。)

レンタルサーバでアクセス制限をかけた場合、http://example.comにアクセスされたらどうなるのか?

このQ&Aのポイント
  • 有料のレンタルサーバを借りた際に、アクセス制限をかけた場合、http://example.comにアクセスされると「Apache HTTP Server Test Page powered by CentOS」というテストページが表示される。
  • また、http://example.com/index.htmlやhttp://example.com/test.htmlなどのアドレスにアクセスされると通常の403の画面が表示される。
  • 現在はhttp://example.comにアクセスした場合のみリダイレクトが行われ、「http://example.com/error/noindex.html」が表示されるが、http://example.com/にアクセスされた場合の403の画面表示はできない。

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

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

うちのTESTサーバー(Linux:fedora9)で同様の環境を設定して(2~3分で出来ます)試したところ .htaccessの設定だけでは出来ないようですが 結論から先に書くと PHPが使えるならば以下の方法で出来ます 1. .htaccess に AddHandler application/x-httpd-php .php Directoryindex index.php の2行を記述します   ( AddHandlerは記述しなくてもphpが動けば不要です) 2. 以下の内容の index.php を設置します <? $ip403 = array( '1.1.1.1' ##この行はいじらないこと(この行にhitすると0が返る為ダミー、) ,'192.168.1.44' ## 2.この行以降の '' 内に 制限するアドレスを記述 ,'192.168.1.33' ,'250.255.1.2' ,'1.2.3.4' ## 3.アドレスを追加する場合はこの行から ); の前に .'1.2.3.4' のように記述 ); if(array_search($_SERVER[REMOTE_ADDR],$ip403)) {header('HTTP/1.0 403 Forbidden'); print <<< DENY_HTML <html> <h1>403</h1> ここにdeny時のHTMLを書く DENY_HTML; } else { print <<< ALLOW_HTML <HTML> <H1>いらっしゃいまふぇ~</H1> ここにallow時のHTML文 ALLOW_HTML; } ?> ## 以上です # 別ページに飛ばすときは header('HTTP/1.0 403 Forbidden');~DENY_HTML; までを消して header('Location: http://www.example.com/er_test/403.php'); ## などと記述します。 http://jp2.php.net/header 説明:何故 .htaccess で ErrorDocument 403 /er_test/er.php などと記述してもうまくいかないか httpd.confまたは、それのincludeファイルにて ErrorDocument 403 /error/noindex.html が指定されていますが toppageでのエラーだけは VirtualHostであっても上記の記述が .htaccessの指定よりも優先されてしまいます httpd.confはユーザーがいじれるものでは有りませんし また /error/noindex.html はサーバー管理者側で用意したものの筈ですので 内容を変えることも通常は出来ません ですので 一旦 index.php に正常にアクセスし、 そのindex.phpの中でアクセスを制限する必要が有ります。

masarin16
質問者

お礼

umasikajiroさまへ mod_rewriteの件では、たいへんお世話になりました。 このたびは、TESTサーバーでわざわざ確認していただきまして ほんとうにありがとうございます。 .htaccessでのアクセス制限を解除したうえで 上記を参考にし、phpを設置してみました。 結果、望みどおりの動きをしてくれるようになり たいへん満足しております。 ありがとうございました。