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

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

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

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

.htaccess

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

Q&A

解決済

1回答

3788閲覧

1つの htaccess ファイルでトップページと特定のディレクトリ以外を Basic 認証させたい

退会済みユーザー

退会済みユーザー

総合スコア0

Apache

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

.htaccess

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

0グッド

0クリップ

投稿2020/09/09 03:24

一部を除いて Basic 認証を設置しようとしています。
公開ディレクトリ直下の htaccess 1つで、サイトのトップページ(public_html/index.html)、一部の下層ページ(例では public_html/dir_2/ )だけ認証なしで閲覧可能なようにし、これ以外のページは認証ありにしたいと思っています。
ディレクトリ構造は以下のような感じです。

user_dir/  ├ public_html/  │ ├ dir_1/  │ │ ├ index.html  │ ├ dir_2/  │ │ ├ index.html ← 認証なし  │ │ ├ index1.html ← 認証なし  │ │ ├ index2.html ← 認証なし  │ │ └ index3.html ← 認証なし  │ ├ dir_3/  │ │ ├ index.html  │ ├ dir_4/  │ │ ├ index.html  │ ├ dir_5/  │ │ ├ index.html  │ ├ dir_6/  │ │ ├ index.html  │ ├ dir_7/  │ │ ├ index.html  │ ├ dir_8/  │ │ ├ index.html  │ ├ .htaccess ← htaccess ファイルはこれだけにしたい  │ ├ index.html ← 認証なし  │ ├ index1.html ← 認証なし  │ ├ index2.html ← 認証なし  │ └ index3.html ← 認証なし  └ .htpasswd

htaccess には以下のようにしてみたり、色々と試してみたのですが私の知識ではお手上げ状態です。

Apache

1AuthUserFile "/home/teratail/user_dir/.htpasswd" 2AuthGroupFile /dev/null 3AuthName "Please enter your ID and password" 4AuthType Basic 5require valid-user 6 7# 公開ディレクトリトップ(サイトトップページ)の index.html を除外 8<FilesMatch "^(/)?$"> 9 Satisfy any 10 order allow,deny 11 allow from all 12</FilesMatch> 13 14# 特定のディレクトリ(dir_2)を除外 15<FilesMatch "/?dir_2"> 16 Satisfy any 17 order allow,deny 18 allow from all 19</FilesMatch> 20 21# 素材系のファイルを除外 22<FilesMatch ".(gif|jpe?g|png|webp|svg|css|js)$"> 23 Satisfy any 24 order allow,deny 25 allow from all 26</FilesMatch>

ご教授の程、よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ベストな方法かは分かりませんが、下記の方法で解決できました。

Apache

1<IfModule mod_auth_basic.c> 2 SetEnvIfNoCase Request_URI "^(/?)$|^(/?dir_2)|.(gif|jpe?g|png|webp|svg|css|js)$" noauth 3 4 AuthType Basic 5 AuthName "Please enter your ID and password" 6 AuthUserFile "/home/teratail/user_dir/.htpasswd" 7 Require valid-user 8 9 Order Deny,Allow 10 Deny from all 11 Allow from env=noauth 12 13 Satisfy any 14</IfModule>

投稿2020/09/09 04:32

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問