質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

3回答

2928閲覧

.htaccessのSetEnvIfが動作しない?

risektj

総合スコア3

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

1クリップ

投稿2020/07/06 01:32

編集2020/07/06 01:35

前提・実現したいこと

Apache2.2がインストールされているWebサーバ上に.htaccessを設置したいと思います。
しかしテストで下記の様な形で.htaccessを設置した所、
どの様な形で設置フォルダにあるHTMLファイルにアクセスしても、403 Forbidden画面が表示されてしまいます。
(ダイレクトアクセス、別のHTMLからアクセス、GETやPOSTでのアクセスなど試しました)

SetEnvIf Referer "^$" hogehoge Order allow,deny Deny from all Allow from env=hogehoge

記述方法が間違っているのでしょうか?
Refererはとりあえず仮のものですが、
下記の様な別の条件の記述で試しても、すべて403 Forbiddenでした。

SetEnvIf User-Agent "Windows" hogehoge Order allow,deny Deny from all Allow from env=hogehoge

結果 OSに関係なく全て403

SetEnvIf Remote_Host "(自分のIP)" hogehoge Order allow,deny Deny from all Allow from env=hogehoge

結果 自分のIP、他IPのアクセスすべて403

Allow from env=hogehoge以外の条件のアクセス環境はすべて拒否するという認識でいますが、何かミスがありますか?

【試したこと、確認したこと】
・上記4行以外の記述はありません。
.htaccess自体は動作しています。Deny from allのみを外すと、アクセス条件に関係なく表示されました。
・/etc/httpd/conf/httpd.conf上のmod_setenvif.soは有効の様でした。
・Apache再起動でも駄目でした。
・Apache2.2がSetEnvIfに対応していない可能性も考えましたが、資料が見つかりませんでした。

原因が分かる方がおられましたら、ご教授お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

allow denyは書く順番に関係なくorderに従います。

Order allow,denyと書いているので、
・デフォルトが不許可
・allowしたものは許可
・ただしallowした物の中でdenyしたものは不許可
ですので、deny all効いて拒否になります。

Apache

1SetEnvIf Referer "^$" hogehoge 2Order deny,allow 3Deny from all 4Allow from env=hogehoge

か、

Apache

1SetEnvIf Referer "^$" hogehoge 2Order allow,deny 3Allow from env=hogehoge

です。

投稿2020/07/06 02:15

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

risektj

2020/07/06 02:17

ありがとうございます。 Orderが順番を示していたのですね。 参考になりました。
guest

0

ベストアンサー

Order allow,deny Deny from all Allow from env=hogehoge

これだと、env=hogehogeを許可した後に、全ての通信を拒否するので結局弾かれます
ブラックリストの書き方です

Order allow,denyOrder deny,allowに書き換えると
全ての通信を拒否してからenv=hogehogeを許可するようになります
ホワイトリストの書き方です

投稿2020/07/06 02:10

hentaiman

総合スコア6421

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

risektj

2020/07/06 02:13

ありがとうございます!! Order deny,allowにした所、動作しました。 そちらの順番が逆でないと許可が動作しないのですね。 勉強になりましたm(__)m
hentaiman

2020/07/06 02:19

意図通り動作しないという意味ではそうですね 分かりやすい例だと order allow, deny allow from all deny 特定のIP にするとall許可の後に、denyに書かれたipを弾きます
guest

0

Order allow,deny

ですので、下記の順に記載するとどうでしょう
Allow from xxxx
Deny from xxxx

投稿2020/07/06 01:54

yukky1201

総合スコア2751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

risektj

2020/07/06 02:02

ご回答ありがとうございます。 AllowとDenyを逆で試してみましたが、やはり駄目な様でした。 SetEnvIf Referer "^$" hogehoge Order allow,deny Allow from env=hogehoge Deny from all
yukky1201

2020/07/06 02:05

他2パターンの可否を試して切り分けしていってください
risektj

2020/07/06 02:11

他2パターンも両方とも403でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問