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

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

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

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

.htaccess

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

Q&A

2回答

5741閲覧

Basic認証で特定URLのみ認証なしでアクセスを許可したい

stkm

総合スコア12

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

.htaccess

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

0グッド

0クリップ

投稿2020/09/12 14:45

はじめに

私の知識が浅く、ある程度ググって調べたのですが最適解に至らないため、
初歩的なことで申し訳有りませんが皆さまのお力添えをいただきたく...

やりたいこと

.htaccessでWebサイト全体にBasic認証をかけつつ、
下記例の様に特定URLのみを認証なしでアクセスを許可したい。

(例)
http://hoge.com/ ⇒ 認証あり
http://hoge.com/login ⇒ 認証あり
http://hoge.com/noauth認証なし

.htaccess Basic認証の内容

DirectoryIndex index.html index.htm index.shtml index.php index.cgi Options -Indexes AuthUserFile /var/www/html/.htpasswd AuthType Basic AuthName "Please enter your ID and password" Require valid-user Satisfy all Order deny,allow Allow from all

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

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

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

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

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

guest

回答2

0

Apache httpd のバージョンがわかりませんが、https://teratail.com/questions/290613 が参考になると思います。

あとは、バージョン 2.4 ならば、

<If "! %{REQUEST_URI} =~ m#^/noauth#"> Require valid-user </If>

とか、

<RequireAny> Require expr "%{REQUEST_URI} =~ m#^/noauth#" Require valid-user </RequireAny>

とか。

投稿2020/09/13 06:22

TaichiYanagiya

総合スコア12173

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

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

stkm

2020/09/13 11:39

コメント頂きありがとうございます。 Apacheのバージョンを確認したところ、2.4でした。 上記URLを参考に早速試してみましたが、書き方がよろしくないのか全てのURLで認証を求められてしまいます。 修正点ございましたら、ご指摘頂けますと幸いです... - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <IfModule mod_auth_basic.c> SetEnvIfNoCase Request_URI "^(/?noauth)" noauth AuthType Basic AuthName "Please enter your ID and password" AuthUserFile "/var/www/html/.htpasswd" Require valid-user Order Deny,Allow Deny from all Allow from env=noauth Satisfy any </IfModule> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
guest

0

試してませんが、

Apache

1<FilesMatch "^(?!noauth)"> 2AuthUserFile /var/www/html/.htpasswd 3AuthType Basic 4AuthName "Please enter your ID and password" 5Require valid-user 6Satisfy all 7</FilesMatch>

noauthがディレクトリなら、DirectoryMatchで。

投稿2020/09/12 16:01

otn

総合スコア85901

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

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

stkm

2020/09/12 16:10 編集

コメント頂きありがとうございます。 情報不足で申し訳有りません。 noauth の部分はディレクトリではありません。 ドキュメントルートのindex.php内でnoauthに応じた内部処理が実行されています。
otn

2020/09/12 16:11

ファイルでもディレクトリでも無いと言うこと??
stkm

2020/09/12 16:20

おっしゃる通りです、ファイルでもディレクトリでもございません。
otn

2020/09/12 16:22

ということなら、プログラムの中で処理するしか無いでしょう。
stkm

2020/09/12 16:55

ファイルでもディレクトリでもない場合、.htaccessでは例外を記述出来ないということですね。 ご教授頂きありがとうございます。 プログラム側での対応を検討致します。
otn

2020/09/12 17:00 編集

ちょっと思いつきました。 index.phpで受けるためにリライトしていると思うので、 ・ndex.phpをindex2.phpにコピーする ・Filesでindex.phpにだけ認証を掛ける ・noauth をindex2.phpにリライト ・それ以外をindex.phpにリライト
stkm

2020/09/13 11:34

ありがとうございます。 別にコメント頂きました方の方法を確認し、そちらが難しそうであれば 上記方法を試してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問