0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Xserver】特定のファイルのみにBasic認証をかける方法

Posted at

特定のファイルだけに Basic 認証をかける方法

Webサイトの一部だけに Basic 認証をかけたいことは多いですが、Xserver や .htaccess の仕様の影響で意外とハマりやすい部分があります。

この記事では、実際に 特定ファイルにだけ Basic 認証を適用しようとしてハマったポイントと、最終的な解決をまとめています。


1. やりたいこと

  • サイト全体ではなく 特定のファイルのみ Basic 認証を設定したい
  • .htaccess を使って制御したい
  • Xserver の環境で運用している

2. htpasswdの設定

Basic 認証を設定する際に必要な .htpasswd ファイルの作成・配置方法について解説します。

.htpasswd ファイルとは

.htpasswd は、Basic 認証で使用するユーザー名とパスワードを保存するファイルです。
パスワードは暗号化された状態で保存されます。

.htpasswd の生成方法

オンラインジェネレーターを使う(最も簡単)

以下のようなオンラインツールで簡単に生成できます:

手順:

  1. ユーザー名とパスワードを入力
  2. 暗号化方式を選択(通常は APR1 または bcrypt
  3. 生成されたコードをコピー

生成例:

username:$apr1$j0soekld$LF6AEybF.K.sGapsObOxA0

.htpasswd ファイルの作成とアップロード

手順:

1 . ローカルでファイルを作成

  • テキストエディタで .htpasswd という名前のファイルを作成
  • ジェネレーターで生成したコードを貼り付け
   admin:$apr1$abc12345$XYZ...
   user2:$apr1$def67890$ABC...

2 . サーバーにアップロード

  • FTP/SFTP クライアント(FileZilla など)を使用
  • 配置場所を決める(後述)

.htpasswd の配置場所

推奨:public_html の外に配置

理由:

  • public_html の中に置くと、万が一 .htaccess の設定ミスでファイルが直接閲覧できてしまうリスクがある
  • セキュリティ的に、Webからアクセスできない場所に置くのがベストプラクティス

ディレクトリ構造例:

/home/【契約ID】/
├── public_html/          ← Web公開ディレクトリ
│   ├── index.html
│   ├── admin/
│   │   └── .htaccess
│   └── ...
└── htpasswd/             ← ここに配置(public_htmlの外)
    └── .htpasswd

3. .htaccessの設定

最初に以下のような .htaccess を設置し、特定ファイル(例:/admin/index.php)にアクセスした場合だけ Basic 認証をかけます。

<Files "index.php">
AuthType Basic
AuthName "Restricted"
AuthUserFile /home/【XserverID】/【ドメイン名】/htpasswd/.htpasswd
Require valid-user
</Files>

401エラー
他の.htaccessなどで、index.htmlやindex.phpを表示しない等の処理を記載していると401エラーが発生する可能性があります

500エラー
.htaccess内のAuthUserFileの絶対パスを間違えていた場合500エラーが発生する可能性があります

AuthUserFileに記載する絶対パス内の【XserverID】はxs123456のような羅列の文字ですので注意してください(@とかはつけません)


4. まとめ(今回の学び)

スクリーンショット 2025-11-25 9.47.41.png

今回のハマりポイントは以下の3つ:

  1. Basic 認証より先にリダイレクトが動くと認証が崩れる可能性がある
  2. AuthUserFile のフルパスは絶対に正確でなければいけない
  3. Xserver では「/home/契約ID/...」が正しいパス構造
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?