アプリ版:「スタンプのみでお礼する」機能のリリースについて

くわしい方お願いします。

携帯用のサイトを作成したいと思い、アクセス制限を行ないました。
すると、アクセスを許可していないIPアドレスで「http://example.com」にアクセスをすると
「Apache HTTP Server Test Page powered by CentOS」という英語表記
のテスト?ページが表示されてしまうのです。そのときのアドレスは
http://example.com」です。

http://example.com/index.html」「http://example.com/test.html
といったアドレスにアクセスすると、通常の403の画面が表示されます。

レンタルサーバを運営しているところに「トラブルチケット」で質問をしたところ
-------------------------------------------------
こちらは弊社のサーバの仕様で
このようなルールが記述してあります。
Options -Indexes
ErrorDocument 403 /error/noindex.html
デフォールトのindexページがない場合はwelcomeページが表示されます。
なお、上記のルールを無効にする権限がございません。
ご了承をお願いします。
------------------------------------------------------
という回答が返ってきました。
以上のことから
アクセス制限をかけると
http://example.comにアクセスがあった場合、強制的にhttp://example.com/error/noindex.htmlへリダイレクト。(けれど、アドレスはhttp://example.comのまま)

http://example.com/~.htmlにアクセスがあった場合
403の画面を表示

といったぐあいです。

将来、403の画面は、.htaccessをつかいError/403.htmlにリダイレクトさせようと思っていました。

けれど、このままでは、「http://example.com」にアクセスがあった場合だけ、http://example.com/error/noindex.htmlが表示されます。

なんとかして、http://example.com/にアクセスがあった場合
403の画面を表示させることはできないでしょうか?

A 回答 (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の中でアクセスを制限する必要が有ります。
    • good
    • 0
この回答へのお礼

umasikajiroさまへ
mod_rewriteの件では、たいへんお世話になりました。
このたびは、TESTサーバーでわざわざ確認していただきまして
ほんとうにありがとうございます。

.htaccessでのアクセス制限を解除したうえで
上記を参考にし、phpを設置してみました。

結果、望みどおりの動きをしてくれるようになり
たいへん満足しております。
ありがとうございました。

お礼日時:2008/07/13 13:01

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