こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

特定のページだけ認証をかけたい

https://okwave.jp/qa/q9629337.html
の続き

下記のように認証をかけたのですが、該当ページにアクセスしてもそのまま開きます。
<Files html/charge.html>
AuthUserFile /var/www/vhosts/ドメイン名/httpdocs/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user
</Files>


しかし、アクセスすると認証の画面が出ません。
そのままページが開きます。
どこに問題があるのでしょうか?


サーバはロリポップのエコノミープランです。

投稿日時 - 2019-10-02 00:49:44

QNo.9662717

困ってます

質問者が選んだベストアンサー

あっと、ごめんなさい。
「※CGI もしくは SSI が正しく動作していません。」
というエラーメッセージからみて、認証の問題ではないと早合点してしまいました。

実際にlolipopのサーバーで実験してみたところ .htaccessの
AuthUserFile ~
で指定する.htpasswdファイルの フルパスを間違えていると、
認証ダイアログがでた後に
「 ※CGI もしくは SSI が正しく動作していません。」
が出ました。
2回目移行は 認証ダイヤログがでないで、いきなりこのメッセージになります。
(つまり、同じ現象ですね)
なお、このフルパスを私の契約サーバーの環境に合わせて正しく書き換えると、
きちんと認証後に、ページの表示をしてくれました。

#lolipopでCGIやSSIの問題ではないときも、500 ERROR時に固定で
#「※CGI もしくは SSI が正しく動作していません。」
#ってエラーがでる仕様なのは、ちょっとどうかと思いますが、それはそれとして…


つまり、.htaccessの
AuthUserFile ~
で記載した フルパスを間違えているか、
サーバー上に .htpasswd が存在していないかのどちからでしょう。

なお、.htpasswdは存在しているが、ファイルの内容として間違えているとき
(たとえば ユーザーID{コロン}のあとに 誤って平文(生の)でパスワードを書いた時は)
「※CGI もしくは SSI が正しく動作していません。」
にはならずに、何度も認証のダイアログが出てきました。


よって、、.htapsswdファイルの内容の問題は残っているとしても、
とりあえずは、.htaccessの.htpasswdファイルのフルパスの
指定ミスを解決する必要があるでしょう。

投稿日時 - 2019-10-03 10:33:13

お礼

ありがとうございます。出来ました。

投稿日時 - 2019-10-03 12:37:44

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

> ※CGI もしくは SSI が正しく動作していません。

これは 認証とは別問題ですね。
(つまり認証までは 成功していると思われます)

 .htaccessファイルの内容は、上述の
<Files

</Files>
だけですか?

もしかして、それ以外に ロリポップで使えなくなった(?)
Options +FollowSymLinks
とか
Option All *****
を書いているのなら、それが原因かもしれないので、
その行を試しに消してテストしてはどうでしょう。

投稿日時 - 2019-10-02 17:44:38

お礼

# === index.htmlなしに統一 ================================
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://xxx/$1 [R=301,L]



# === httpsに統一 ================================
RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]



# === 間違ったアドレスはブログトップへ遷移 ================================
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ https://xxx/html/blog-top.html [L]



# === ポジティブになるアプリの認証 ================================
<Files charge.html>
AuthUserFile /var/www/vhosts/xxx/httpdocs/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user
</Files>

上記ですべてです。
ありがとうございます。

投稿日時 - 2019-10-02 23:29:49

ANo.1

<Files html/charge.html>

<Files charge.html>
に変更するとどうなりますか?

投稿日時 - 2019-10-02 13:10:44

お礼

ありがとうございます。
確かにそのようにした所、認証画面は出てきました。
しかし、入力したところID、PWが間違っていると認識されたからか下記のメッセージの画面になってしまいました。

※CGI もしくは SSI が正しく動作していません。
• URLに間違いがないか、再度確認してください。再読み込みしてください。
• ご利用中のユーザー様は【ロリポップ!よくある質問集】をご参照ください。
• 疑問点等ございましたら【ロリポップ!お問合せフォーム】よりお問合せください。


そして、一度でも失敗すると、何度アクセスしても上記の画面になってしまいます。
一度しかチャンスが無いのですか?

またパスワードファイルには、
test:yqaAb0nkjHuBQ(PWは暗号変換済み)
となっているのですが、これだけの記載があればいいのですよね。

暗号変換済みのPWは、上記ではなく変換前の文字列を入れるんでしょね。
間違ってはいないはずなのですが

投稿日時 - 2019-10-02 16:30:37

あなたにオススメの質問