🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Apache

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

.htaccess

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

GoogleComputeEngine

GoogleComputeEngineとは、Linux VMをGoogleのデータセンター上で走らせるIaaS (インフラストラクチャ アズ ア サービス)製品で、ビジネス向けクラウドコンピューティング基盤のことです。

Q&A

解決済

2回答

1874閲覧

GCEでのbasic認証の設定方法(Internal Server Errorの解消)

109s

総合スコア1

Apache

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

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

.htaccess

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

GoogleComputeEngine

GoogleComputeEngineとは、Linux VMをGoogleのデータセンター上で走らせるIaaS (インフラストラクチャ アズ ア サービス)製品で、ビジネス向けクラウドコンピューティング基盤のことです。

0グッド

1クリップ

投稿2021/01/24 08:26

前提・実現したいこと

GCE(OS: Debian GNU/Linux 9)でwordpressを使ったサイト制作をしています。
開発中のため、basic認証を設定したいのですが、Internal Server Errorが発生します。
(これまで、さくらVPSなどで同様の設定をしていたのですが、その際は普通に設定ができていました。)

その他、必要な情報ありましたらご教示ください。
何卒よろしくお願いいたします。

発生している問題・エラーメッセージ

エラーログを確認したところ以下のメッセージが表示されています。

[core:alert] [pid 24726] [client XXX] /var/www/html/.htaccess: AuthUserFile not allowed here

該当のソースコード

htaccess

1# BEGIN WordPress 2# The directives (lines) between "BEGIN WordPress" and "END WordPress" are 3# dynamically generated, and should only be modified via WordPress filters. 4# Any changes to the directives between these markers will be overwritten. 5<IfModule mod_rewrite.c> 6RewriteEngine On 7RewriteBase / 8RewriteRule ^index.php$ - [L] 9RewriteCond %{REQUEST_FILENAME} !-f 10RewriteCond %{REQUEST_FILENAME} !-d 11RewriteRule . /index.php [L] 12</IfModule> 13 14# END WordPress 15 16# basic Authentication 17AuthUserFile /var/www/html/.htpasswd 18AuthName "Please enter your ID and password" 19AuthType Basic 20require valid-user 21 22# .htaccess, .htpasswdのパーミッションは同様に以下です。 23-rw-r--r-- 1 www-data www-data

試したこと

/etc/apache2/apache2.confの記述内容は以下の通りです。
調べていたところ、AllowOverrideをAllにすればいいという記載もありましたが、Allにしてもエラーは解除されませんでした。

apache2conf

1<Directory /var/www/> 2 Options Indexes FollowSymLinks 3 AllowOverride None 4 Require all granted 5</Directory>

補足情報(FW/ツールのバージョンなど)

Apache 2.4.25
Wordpress 5.5.3

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

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

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

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

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

guest

回答2

0

ベストアンサー

パスワードファイルがドキュメントルート(公開領域)に設置されてるのでエラーになってる可能性があります。

AuthUserFile /var/www/html/.htpasswd

このファイルをwebアクセスできない場所に設置した上で、上記の設定も直してみて下さい。

投稿2021/01/24 09:43

hiok

総合スコア595

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

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

109s

2021/01/24 11:24

ご回答ありがとうございます。 頂いた内容踏まえ、以下に設置しましたが、同様にInternal Server Errorでした。 +++設置場所+++ /var/test/.htpasswd +++ +++.htaccessの記述+++ # BEGIN WordPress # The directives (lines) between "BEGIN WordPress" and "END WordPress" are # dynamically generated, and should only be modified via WordPress filters. # Any changes to the directives between these markers will be overwritten. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress # basic Authentication # AuthUserFile /var/www/html/.htpasswd AuthUserFile /var/test/.htpasswd AuthName "Please enter your ID and password" AuthType Basic require valid-user +++ なお、エラーログの内容は以下の通りです。 +++ [core:alert] [pid 25498] [XXX] /var/www/html/.htaccess: AuthUserFile not allowed here +++ その他、何かございましたら、ご指示ください。 よろしくお願いいたします。
hiok

2021/01/24 11:58

sites-available/、conf-available/ディレクトリに設定ファイルはあるでしょうか? 68userさんご指摘のとおり、AllowOverride Allが効いてない気がします。
109s

2021/01/25 02:13

【解決しました!】 ご返信ありがとうございます。 頂きました点確認したところ、sites-availableにwordpress.confがありました。 +++ <Directory /var/www/html> Options -Indexes AllowOverride FileInfo </Directory +++ こちらの内容を以下に書き換えたところ、無事500エラーが解消されました。 +++ <Directory /var/www/html> Options -Indexes # AllowOverride FileInfo AllowOverride All </Directory>+++ apache2.confでは、<Directory /var/www/>の設定まででしたが、 wordpress.confには、<Directory /var/www/html/>の設定までありました。 こちらの内容を修正することにより解決いたしました。 ご丁寧にありがとうございました!
guest

0

<Directory /var/www/>
について、Options All と AllowOverride All としてみてください。

なおこれは全部入りのゆるい設定なので、もし動いたら All ではなく必要なもののみ許可するのがよいでしょう。

なんとなく、AllowOverride All でとりあえず動く気はするので、Apache 再起動忘れじゃなかろうかとは思ったりします。

投稿2021/01/24 08:38

68user

総合スコア2022

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

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

109s

2021/01/24 09:35

早速のご回答ありがとうございます。 頂きました通り、対応いたしましたが、Internal Server Errorのままでした。 以下、対応内容です。 ①<Directory /var/www/>の通り書き換えました。 ``` <Directory /var/www/> Options All AllowOverride All Require all granted </Directory> #Apacheの再起動 sudo service apache2 restart ``` /var/log/apache2/error.logの内容 ``` [core:alert] [pid 25497] [client XXX] /var/www/html/.htaccess: AuthUserFile not allowed here ``` その他、確認/修正すべきところはございますでしょうか。 よろしくお願いいたします。
68user

2021/01/24 09:40

なんでしょうねぇ。 mod_rewrite 部分全部コメントアウトするとどうなりますか? .htaccess と .htpasswd は同じディレクトリにありますか?
68user

2021/01/24 09:41

あとは /var/www/html/ を上書きしている Directory 定義などないでしょうか。
109s

2021/01/24 11:51

ご返信ありがとうございます。 頂いた点、対応してみましたが、Internal Server Errorのままでした。 ①mod_rewriteのコメントアウトですが、以下の通り実施しました。 +++.htaccessの記述+++ # BEGIN WordPress # The directives (lines) between "BEGIN WordPress" and "END WordPress" are # dynamically generated, and should only be modified via WordPress filters. # Any changes to the directives between these markers will be overwritten. #<IfModule mod_rewrite.c> #RewriteEngine On #RewriteBase / #RewriteRule ^index.php$ - [L] #RewriteCond %{REQUEST_FILENAME} !-f #RewriteCond %{REQUEST_FILENAME} !-d #RewriteRule . /index.php [L] #</IfModule> # END WordPress # basic Authentication AuthUserFile /var/www/html/.htpasswd AuthName "Please enter your ID and password" AuthType Basic require valid-user +++ エラーログは以下の通りです。 +++ [core:alert] [pid 26414] [client 210.165.68.68:64139] /var/www/html/.htaccess: AuthUserFile not allowed here +++ ②.htaccess と .htpasswd は同じディレクトリにありますか? ➾仰る通り同じディレクトリにあります。 ③/var/www/html/ を上書きしている Directory 定義 ➾apache2.confには、以下の通り、特段定義がありませんが、こちらで認識はあっていますでしょうか。 +++ # Sets the default security model of the Apache2 HTTPD server. It does # not allow access to the root filesystem outside of /usr/share and /var/www. # The former is used by web applications packaged in Debian, # the latter may be used for local directories served by the web server. If # your system is serving content from a sub-directory in /srv you must allow # access here, or in any related virtual host. <Directory /> Options FollowSymLinks AllowOverride None Require all denied </Directory> <Directory /usr/share> AllowOverride None Require all granted </Directory> <Directory /var/www/> # Options Indexes FollowSymLinks Options All AllowOverride All Require all granted </Directory> +++ その他、対応すべきことございましたら、ご教示ください。
68user

2021/01/24 12:00

うーんわからないです。すみません。 思いつくのはこれくらいです。 ・AllowOverride All は実際は AllowOverride AuthConfig Limit だけでいけるはず。 ・ /var/www/ に .htaccess などがあって何か書いてませんか。 ・apache2.conf のあるところに conf.d/ などがあって、何か書いてありませんか。 ・/var/www や /var/www/html などが 777 とか 775 などの開けすぎなパーミッションになってませんか (その場合は違うエラーメッセージが出るような気がしますが) あとは .htaccess がダメなら apache2.conf にて定義する、くらいでしょうか。
68user

2021/01/24 12:05

あとは、apache2.conf は本当に有効なファイルかどうか。適当に aaaa などと文法エラーになるものを書いて restart するとどうなるか。
109s

2021/01/25 02:21

【解決しました!】 ご返信ありがとうございます。 仰って頂きました通りAllowOverride Allが聞いておらず、以前ご回答頂いた点について、以下の対応を行いましたところ解決いたしました。 >あとは /var/www/html/ を上書きしている Directory 定義などないでしょうか。 ➾apache2.confに記載がなかったのですが、同じディレクトリにあったsites-availableにwordpress.confがありました。 +++wordpress.confの記述+++ <Directory /var/www/html> Options -Indexes AllowOverride FileInfo </Directory +++ こちらの内容を以下に書き換えたところ、無事500エラーが解消されました。 +++ <Directory /var/www/html> Options -Indexes # AllowOverride FileInfo AllowOverride All </Directory> +++ なお、上記に伴い、apache2.confの<Directory /var/www/>は、以下の通り当初の状態に戻しております。 +++ <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> +++ ご丁寧にご回答・ご対応頂きありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問