• Skip to main content
  • Skip to primary sidebar

まほウェブ

魔法使いのwebマーケティング

現在の場所:ホーム / サーバー / Basic認証が効かない5パターンの対処と.htacessファイル作成方法

Basic認証が効かない5パターンの対処と.htacessファイル作成方法

By Wizard-Nakata 投稿日: 2019年10月15日 最終更新: 2021年1月8日

Nakata
Nakata
こんにちは。WordPressやConcrete5を用いたweb制作・ディレクションを行っています、MK Wizard中田です。

 

制作中のサイトを先方へ確認してもらうために
一般には非公開の形で、サイトを設置することが必要な場合があります。

その場合に利用されるのが、Basic認証。
IDとパスワードを入力しないと、ブラウザ上からは閲覧できないというものです。

basic認証

以下では、BASIC認証が効かない場合にチェックしてほしい項目と
実際にConcrete5 + ConoHa VPSという環境で
Basic認証を設置した際の方法を記載します。

 

目次

  • BASIC認証が効かない場合の5つの大きな原因
  • ①前提: .htaccess活用によるBASIC認証ができるのは、ApacheのWebサーバーだけ
    • nginxでのBASIC認証の実装方法
    • 運用しているWebサーバーがApacheなのかnginxなのか分からない場合の調べ方
  • そもそものBasic認証のつけ方(Apacheの場合)
    • .htaccess(BASIC認証設定ファイル)の作り方
    • ②: .htaccessファイル内AuthUserFileに記述する「サーバーパス」は合っていますか?
    • ③: .htaccessファイルの最後には必ず空行を含み、文字コードはUTF-8(BOM無し)
    • .htpasswd(BASIC認証パスワードファイル)の作り方
  • .htaccessファイルについて詳細を解説
  • .htaccessファイルの設置場所について
  • ④: Basic認証が効かない場合には、httpd.conf(サーバー主設定ファイル)のAllowOverrideをチェック
  • ⑤: パーミッションを確認して、Apacheサーバーを再起動したら完了

BASIC認証が効かない場合の5つの大きな原因

まず、BASIC認証が効かない場合の原因としては、下の5つのケースが多いです。

  1. WebサーバーとしてApacheではなくnginxを利用している
  2. AuthUserFileで指定するpasswdファイルへの「サーバーパス」が誤っている
  3. 最終行に空行がない、文字コードがUTF-8以外になっている
  4. httpd.confサーバー設定ファイルでAllow Overrideによるオーバーライドを許可していない
  5. Apacheサーバーを再起動していないため、.htaccessファイルが読み込まれていない

以下から、①〜⑤として、上記5通りのそれぞれについて解説していきます。
途中、そもそものBASIC認証のつけ方についても基礎から説明。

 

①前提: .htaccess活用によるBASIC認証ができるのは、ApacheのWebサーバーだけ

.haccessを利用したBASIC認証は、WebサーバーがApacheである場合だけです。
nginxを利用している場合には、.htaccessではなく他の方法でBASIC認証を実装する必要があります。

nginxでのBASIC認証の実装方法

nginxによるBASIC認証の実装については、下記の記事を参考にしてください。

Nginx で Basic 認証 – Qiita
[Linux] Nginx に Basic 認証を設定する方法 │ TEAM T3A

 

運用しているWebサーバーがApacheなのかnginxなのか分からない場合の調べ方

ターミナルより運用サーバーにSSH接続等でログイン後

1
sudo netstat -untap|grep 80

上記のコマンドを実行。

として出てくる文字列の末尾がhttpdだったらapacheで、nginxだったらnginx、出力が無ければどちらも80番ポートでは起動していないという感じになります。

Apache – パソコンで起動中のサーバを確認する方法|teratail

 

あるいは、80番または443番ポートをLISTENしているプロセスを調べる方法も。

1
$ sudo /usr/sbin/lsof -Pn -i tcp:80

サーバ上で動いているWebサーバを特定する方法 | CentOS | daily memorandum 3.0.0

 

そもそものBasic認証のつけ方(Apacheの場合)

まず、Basic認証を行うためのファイル設定方法について。
.htaccessファイルと、.htpasswd(パスワードファイル)の2つが必要となります。

 

.htaccess(BASIC認証設定ファイル)の作り方

.htaccessファイルには、以下のように記述。
不可視ファイルのため、 ローカルでファイル先頭に . (ドット)を付けられない方は
ファイル名をhtacesssにしたうえで以下を記述、サーバーにアップロードした際にファイル名の先頭に . を付けて名前を変更してください。

 

1
2
3
4
5
6
7
<Files ~ "^\.(htaccess|htpasswd)$">
Deny from all
</Files>
AuthType Basic
AuthUserFile /home/foo/html/.htpasswd
AuthName "Please enter your ID and password"
Require valid-user

ソースコード引用元(各属性の意味や詳細についてはこちらを参照): .htaccessでBasic認証の設定をする方法 | てらこや.work

参考: いまさらながら、Basic認証のつけかた – Qiita

 

②: .htaccessファイル内AuthUserFileに記述する「サーバーパス」は合っていますか?

.htaccessファイル内、AuthUserFileには” /サーバーのパス/.htpasswd ” として、パスワードファイルの設置先パスを記述する必要があります。

上記ソースコードでは5行目

1
AuthUserFile /home/foo/html/.htpasswd

の部分。ここはサイト表示のURLとは異なり、”サーバーパス”である必要があります。
下記手順などで必ずサーバーパスを確認してから記述するようにしてください。

サーバーパスはサイトのURLとは違います。以下の内容を例えば test.php などの名前をつけて、BASIC認証をかけたいサーバーのディレクトリにアップロードしてください。

1
2
3
<?php
echo __FILE__;
?>

アップロードしたら、Chromeなどのブラウザでそのファイルにアクセスします。アップロードしたサーバーの公開URLが vektor-inc.co.jp ならば、vektor-inc.co.jp/test.php にアクセスすると、そのサーバーパスが表示されるのでメモ帳などにコピーしておきます。

サイト全体にBASIC認証をかける方法 | 株式会社ベクトル

 

③: .htaccessファイルの最後には必ず空行を含み、文字コードはUTF-8(BOM無し)

.htaccess の文字コードはUTF-8(BOM無し)、改行コードはLFを設定し、ファイルの最終行には空行を入れる必要があります。ただし .htaccess が日本語などの全角文字を含まず、半角英数字だけである場合は文字コードは Shift-JIS や EUC-JP などでも問題ありません。

.htaccess の書き方 | murashun.jp

空行がない場合や文字コードが異なる場合には、Internal Server Errorが発生してしまう可能性があるとのこと。

 

.htpasswd(BASIC認証パスワードファイル)の作り方

次に、BASIC認証で用いるIDとパスワードを記載したファイルを作成し、サーバーに設置。
このうち、パスワードは暗号化したものを記載しておく必要があります。

コマンドを利用したやり方もありますが、簡単なパスワード生成用サイトがあります。
下記のサイトより暗号化パスワードを生成、生成された1行のテキストをそのまま.htpasswdファイルに貼り付けてサーバーへアップロードしてください。
(ファイルの中身も生成されたテキスト1行のみでOK)

htpasswdファイル生成(作成)

 

.htaccessファイルについて詳細を解説

htaccessファイル

.htaccessファイルとは…

.htaccess(ドット・エイチ・ティ・アクセス)とは、Apache(アパッチ)などのソフトウェアが使用されている環境で使用可能なディレクトリ単位のWebサーバー設定ファイルです。
これが特定のディレクトリに設置されると、「.htaccess」内に記述されている内容が、設置されたディレクトリ内とその下層のディレクトリ内に対して適用されます。

.htaccessとは? – Qiita

 

具体的には、この.htaccessファイルに設定を書き込むことで

  • Basic認証
  • 301リダイレクトの設定
  • カスタム404エラーページ設定
  • URLの正規化

などを、.haccessファイルが設置されているディレクトリおよびそれ以下のディレクトリについて、設定することができます。

ただこの.htaccessファイル、サーバー主設定ファイル(httpd.conf)を触ることができるなら、極力使わないほうが良いとされています。
(今回は.htaccessで設定をしましたが。)

 

基本的に、.htaccess ファイルの使用は極力避けてください。
ユーザ認証の設定は httpd.conf (サーバ主設定ファイルのこと) に書くことができますし、実際その方がより良い設定方法とされています。

どんな時に使用すべきか
.htaccess ファイルは、ディレクトリ毎の設定を行ないたいけれど、サーバシステムの root アクセス権限を持っていないという場合にのみ使うべきものです。
例えば、レンタルサーバーなどで自分専用にWEBサーバーの設定を変えたい場合は、.htaccess ファイルを格納することで、WEBサーバの設定変更(一部)を行うことができます。
他にも、サーバ管理者が頻繁に httpd.conf の設定変更を行ないたくはないので、個々のユーザが .htaccess ファイルを使って設定変更を行なうことを許可したい!そんな時に使用します。
しかし、使用する場合は、httpd.conf でAllowOverrideディレクティブを使って、最低限の許可しか与えないようにすべきですね。

.htaccessとは? – Qiita

 

.htaccessファイルの設置場所について

基本的には、.htaccessファイルの設定内容を効かせたいディレクトリに設置をしてください。
.htaccessファイルを設置した配下のディレクトリには、全て設定内容が適用されます。

 

.htaccessファイル設置場所について、参考記事:
.htaccessの設置場所はここでいいでしょうか? 【OKWAVE】

適用範囲について、参考記事:
htaccess留意事項

 

④: Basic認証が効かない場合には、httpd.conf(サーバー主設定ファイル)のAllowOverrideをチェック

vpsサーバー

Basic認証が効かない場合には、httpd.conf(サーバー主設定ファイル)のAllowOverrideの項目が” All “になっているか
チェックしましょう。

なお、エックスサーバーなどの共用レンタルサーバーの場合には
httpd.confファイルを編集できないことが多いので、諦めるしかありません…
(ファイル自体を見つけることができません)

 

Apacheのhttpd.confで.htaccessが有効になるようにしとかないといかんのですね。
ドキュメントルートのAllowOverrideがNoneになっていたので、Allに変更。

Basic認証で躓いた – Qiita

 

Apacheの設定ファイル、httpd.confの場所は

1
/etc/httpd/conf/

(CentOS,RHEL,Fedoraなどの場合)

Apacheの設定ファイル httpd.confの場所 – Qiita

 

 

私の環境、ConoHa VPSの場合は以下の設定内容でした。
環境は前述のとおり、ConoHa VPSでConcrete5イメージをインストールしたものです。

httpd.confファイル内
130行目あたりに以下の設定があります。
151行目あたりの”AllowOverride”を
None → All に変更して、オーバーライドを許可します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# Further relax access to the default document root:
<Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
 
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
 
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>

 

また、上記Aliasのディレクトリに加えて
ルートディレクトリの部分も
AllowOverride None → All に修正

100行目あたり

1
2
3
4
5
6
# <Directory> blocks below.
#
<Directory />
AllowOverride none
Require all denied
</Directory>

 

これを none → All に修正します。

mod_rewriteが効かないと思ったら.htaccessが効いていなかった件

 

⑤: パーミッションを確認して、Apacheサーバーを再起動したら完了

.htaccessおよび.htpasswdのパーミッションは604にしてください。
(サーバーによっては644推奨)

ここまで完了したら、サーバーを再起動して、完了です。(Apacheを再起動する。)
サーバーを再起動(またはhttpd自体を再起動)させないと、httpd.confの設定変更が有効になりませんのでご注意ください。

1
# service httpd restart

または

1
# systemctl restart httpd

でApacheを再起動します。

 

ConoHa VPSであれば、サーバーコントロールパネルより「再起動」を押して
VPSごと再起動してもOKです。

以上で完了です。おつかれさまでした!

この記事をシェアする:

  • クリックして Twitter で共有 (新しいウィンドウで開きます)
  • Facebook で共有するにはクリックしてください (新しいウィンドウで開きます)

関連

カテゴリー: サーバー タグ: basic, concrete5, conohavps, htaccess

お気軽にコメントをくださいませ!

 

本記事はあなたのお役に立てましたでしょうか?
ひとことでもコメント欄からご感想をいただければ、モチベーションに繋がります。

また「本記事には書かれていなかったけれど、他の点について知りたい」というご質問や、誤っている箇所などあればご指摘もお待ちしております。

メールアドレスが公開されることはありません。
なんでもお気軽にコメントくださいませ。

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

email confirm*

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

最初のサイドバー

Marketing Wizard : Nakata

" Webマーケティングで魔法をかける "
東京都にて活動しています、SEOと会員サイト制作に強みのあるweb屋フリーランスです。

【経歴】
神戸大学法学部卒→政府系金融機関。その後、大阪のインバウンド向け広告代理店に勤務した後、2014年4月から個人事業主として活動開始。
約5年間にわたり、旅行・観光のプランニング&手配代行サービスを運営しておりました。

独力でサイトを立ち上げ、100%Webからの集客とリピーター戦略で安定した成長と売上を確保。
当時の経験を活かし、現在は「Web屋」として奮闘中。
Web制作ではConcrete5を活用した会員サイト構築を強みとしています。

制作・Webマーケティング・顧客管理の技術を通じ
ひとり起業家・小規模事業の方のお力になりたく思っています。
特に企画ヒアリング・設計・SEOが得意です。

本ブログでは主として、少ないリソースでも活きる「No-Code」でのweb制作・開発方法をはじめ
web集客方法、便利ツール、SEOテクニックについてご紹介させていただきます。

サイト内検索

最近の投稿

  • エックスサーバーにSSH接続できない!”Permission Denied” 3大の原因 2021年1月8日
  • 仮想端末tmuxを利用してSSHセッションを維持する方法 2020年12月30日
  •  NextCloud構築はsnapコマンドで一発!インストール方法 2020年12月8日
  • WordPressエディタ入力時のデフォルトフォントサイズを変更する2つのステップ 2020年11月12日
  • concrete5 で掲示板アドオンはあるか?その他シンプルな実現方法 2020年11月7日

カテゴリー

  • CMS一般
  • concrete5
  • EC/ショッピングカート
  • No-Code
  • SEO
  • Strikingly
  • webデザイン/コーディング
  • webマーケティング一般
  • WordPress
  • サーバー
  • フリーランス論/仕事術
  • ライティング

タグ

2019 concrete5 Conoha conohavps contactform7 CSS E-A-T googleサイト google公式ガイドライン Instagram instapage kusanagi LP mamp No-Code nofollow owncloud podcast seoライティング ssh strikingly tmux vps Webサイトビルダー web制作 wordpress エックスサーバー エッセンシャル思考 エラー対応 クラウドストレージ スライド セミナー ツール データベース ナレッジパネル パーマリンク ブログ プラグイン ペライチ ライティング 事例 本 構造化マークアップ 社内ポータル 著者情報

Anchorでpodcastラジオ音声配信もしています

Webマーケティングやスモールビジネスに役立つ方法をpodcastラジオ音声配信しています。

魔法使いのWebマーケティングRadio  • A podcast on Anchor

「ながら聴き」も可能な内容ですので、ぜひお楽しみください。

web制作・SEO・メディア運用のご案内

webサイト制作・CMS導入・
SEOコンサルティング・広告運用・
メディア運用の依頼など
ご相談、ご依頼を承ります。

サービス内容およびポートフォリオ
(制作実績)

webに関するお悩みを
企画・制作・運用まで
なんでもお気軽に
ご相談くださいませ。

 

対応CMS等
WordPress・Concrete5・STUDIO・Strikingly

お気軽にご相談ください

webサイトの制作・分析からSEO・広告運用まで。

お問い合わせはこちらから。

ぜひお気軽にご相談ください。

Twitterでwebマーケティングに効くお役立ち情報を呟いています

ツイート

©2018 Marketing Wizard・まほウェブ・魔法の使いのwebマーケティング・逆転のスモールビジネス