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

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

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

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

.htaccess

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

Q&A

解決済

3回答

4077閲覧

.htaccessとhttpd.confファイルの優先順位

vverbv

総合スコア12

Apache

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

.htaccess

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

0グッド

0クリップ

投稿2018/06/23 08:16

初めまして、こんにちは。
apacheの設定と.htaccessの設定で躓いており、ご教授頂けますでしょうか。

【やりたいこと】
.htaccessでアクセスを制限して、仮に.htaccessがなくなった場合はアクセスを全て拒否するような仕組みを実現したいと思っています。

【環境】
・ドメイン(htaccess.com)はhostsを書き換えて対応しています。

・apache2.4

[root@testserver public_html]# httpd -v Server version: Apache/2.4.33 (Amazon) Server built: May 23 2018 19:02:39

・apacheの設定

[root@testserver public_html]# httpd -S VirtualHost configuration: *:80 is a NameVirtualHost default server htaccess.com (/etc/httpd/conf.d/htaccess.com.conf:1) port 80 namevhost htaccess.com (/etc/httpd/conf.d/htaccess.com.conf:1)
[root@testserver public_html]# httpd -t Syntax OK
[root@testserver public_html]# cat /etc/httpd/conf.d/htaccess.com.conf <VirtualHost *:80> ServerName htaccess.com DocumentRoot "/home/ec2-user/public_html" DirectoryIndex index.php index.html index.xml <Directory /home/ec2-user/public_html > Options FollowSymLinks AllowOverride All Require all denied </Directory> </VirtualHost>

・.htaccessの設定

[root@testserver public_html]# pwd /home/ec2-user/public_html [root@testserver public_html]# ll -altr total 20 drwxr-xr-x 4 ec2-user ec2-user 4096 Jun 23 06:53 .. -rw-r--r-- 1 ec2-user ec2-user 13 Jun 23 06:53 index.html -rw-r--r-- 1 root root 587 Jun 23 07:01 .htaccess -rw-r--r-- 1 root root 20 Jun 23 07:22 index.php drwxr-xr-x 2 ec2-user ec2-user 4096 Jun 23 07:22 . [root@testserver public_html]# cat .htaccess order deny,allow deny from all allow from XXX.XXX.XXX.XXX

【躓いている部分】

/etc/httpd/conf.d/htaccess.com.conf <Directory /home/ec2-user/public_html > Options FollowSymLinks AllowOverride All Require all denied </Directory>

Require all denied の記述を消すと、htaccess.com/index.htmlのページが見れます。
どのようにすれば【やりたいこと】が実現するでしょうか。

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

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

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

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

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

guest

回答3

0

2.4系の記述(Require ~)と、2.2系互換の記述(Allow ~ Deny ~)は独立して動くようです。両方の記述で許可が得られないとアクセス出来ません。
なので、記述はどちらかに統一した方が良いでしょう。2.2系互換は非推奨なので、2.4系が良いでしょうが、2.2系になれているのであれば、将来のバージョンで削除されるまで使うのも良いかと思います。

投稿2018/06/23 15:34

otn

総合スコア84421

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

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

0

ベストアンサー

まず前提として、.htaccess はサーバ管理者による設定 ( httpd.conf とそこから Include される種々の設定ファイル ) を、コンテンツ管理者が(一部)上書きできる仕組みです。

そのため

仮に.htaccessがなくなった場合はアクセスを全て拒否する

これは、「httpd.confの設定としては全拒否とする ( 許可を与えるなら .htaccess を置け )」ということで、/etc/httpd/conf.d/htaccess.com.confの設定に特に問題はないと思います。

問題は、許可を与えるための.htaccessです。こちらで allow,denyというディレクティブが使われていますが、これは過去使われていた形式で、今は非推奨です。なので、Require all deniedの効果を十分上書きできていない懸念があります。

今のApacheは、mod_authz という機構によって ( アクセス元IPアドレスに限らず ) 様々なアクセス制限を行うようになっています。そのためのディレクティブが Requireです。
一方、allow,denyというのは mod_access_compat という、過去との互換性のために残されている機構によります。

ということで、.htaccess の方に書く設定も、mod_authz ( IPアドレス制限なら mod_authz_host ) でやった方が良いように思います。以下のドキュメントもご参考に。
http://httpd.apache.org/docs/2.4/mod/mod_authz_host.html
http://httpd.apache.org/docs/2.4/howto/access.html

投稿2018/06/23 13:38

angel_p_57

総合スコア1672

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

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

0

まず最初に、例示でつかうドメイン名は、「ご自身が所有する実際のドメイン名」か「例示用に用意されているドメイン名( example.com / example.net や example.jp 等)」を使ってください。( 例示用ドメイン名については、http://www.atmarkit.co.jp/fwin2k/win2ktips/801exampledom/exampledom.html 等を参照してください。)


お使いの環境は、Apache 2.4 ですよね。

.htaccess に書いている下記の内容ですが、

order deny,allow
deny from all
allow from XXX.XXX.XXX.XXX

これは、2.2 の書き方ですね。そのため、2.4の環境では、無視されていると思われます。

2.4 では、Require ip XXX.XXX.XXX.XXXRequire host .example.com のようにと記載します。

投稿2018/06/23 13:26

CHERRY

総合スコア25171

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

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

otn

2018/06/23 14:15

無視は無いのでは?mod_access_compatが有効ならallowもdenyも使えるし、有効でなければallowやdenyはエラーになってApacheが起動しないです。
angel_p_57

2018/06/23 15:12

いえ、.htaccess に無効ディレクティブがあるのは、Apache起動エラーではなく設定無視という扱いになるはずです。 mod_authz系とmod_acess_compatの混在がどうなるのか分からないので、下ではmod_authzに揃えた方が良いのではという旨回答しましたが、案外mod_access_compatをLoadModuleすれば済む話なのかもしれませんね。
otn

2018/06/23 15:36

あ、失礼。.htaccessでしたね。その場合は、Internal Server Errorですね。
angel_p_57

2018/06/23 15:43

あ、Internal Server Error でしたか。失礼しました。それならブラウザの表示で気づきそうですから、mod_access_compat自体は有効なんでしょうね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問