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

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

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

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

Q&A

解決済

1回答

1626閲覧

Wordpressベーシック認証のhtaccessを1つにまとめたい

d04062

総合スコア111

WordPress

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

0グッド

0クリップ

投稿2019/03/17 04:49

Wordpressでベーシック認証をする際のhtaccessの記述なのですが、

ルートフォルダに

#wp-login.phpへのアクセス拒否
<Files wp-login.php>
AuthUserFile /home/◯◯/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user
</Files>

wp-adminフォルダに

AuthUserFile /home/◯◯/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
require valid-user

<FilesMatch "(admin-ajax.php)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>

と2つのhtaccessを設置しているのですが、
ルートフォルダのみにまとめる記述はないでしょうか?

もしあれば、回答教えていただけと助かりますm(_ _)m

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

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

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

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

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

guest

回答1

0

ベストアンサー

回答がついていないようなので....


.htaccess をまとめたいということですが、Apache チュートリアル: .htaccess ファイル に記載されているように

.htaccess ファイルはディレクトリ毎に設定を変更する方法を提供します。

という .htaccess の存在理由からすると複数のディレクトリの設定をまとめたいというのは難しいと思います。


問題になるのは、

  • .htaccess では <Files><FilesMatch> しか利用できない
  • <Files> では、ディレクトリを指定できない ( <Files> ディレクティブ )

という条件です。

.htaccess の中で、<Directory> ディレクティブ が、使えると可能になるのですが、.htaccess は、ディレクトリ毎に設定ファイルを置くという前提なのでディレクトリに関する設定はできません。(ファイルを限定しない=ディレクトリ全体という考えだと思います。)


(例)

たとえば、WordPress の最上位にある .htaccess で wp-admin へのアクセス権限をしようとすると

<FilesMatch "^admin.*.php"> AuthUserFile /home/◯◯/.htpasswd AuthGroupFile /dev/null AuthName "Input ID and Password." AuthType Basic require valid-user </FilesMatch > <FilesMatch "^(edit.*|link.*|options.*|plugin.*|post.*|user.*).php"> (略) </FilesMatch > (以下略)

のように wp-admin にあるアクセスを禁止したいファイル名を並べて記載する必要があります。
(ファイル数が多いだけであれば、2つめの <FilesMatch> のようにまとめてかけるので問題ありません。)

できそうに思えるのですが、<Files><FilesMatch> は、.htaccess を設置したディレクトリから下層の全てのディレクトリにあるファイルが対象になりますので、同名のファイルがある場合は注意が必要になります。

たとえば、 wp-admin/index.php にアクセスを禁止する場合、<Files><FilesMatch> では、

<Files "^index.php"> AuthUserFile /home/◯◯/.htpasswd AuthGroupFile /dev/null AuthName "Input ID and Password." AuthType Basic require valid-user </Files >

と記載することになるのですが、.htaccess を設置する WordPress の最上位ディレクトリにも同名のファイル index.php がありますので、このファイルにも認証が設定されることになります。


結論としては、これらの問題を理解した上で、最上位ディレクトリにある .htaccess ファイルで、「一部のファイルにだけ認証を設定する」ことが可能ですが、質問に記載されている現在の別々のディレクトリにある .htaccess の内容をまとめて1つの .htaccess に記載して現在と同じ設定内容で設定するは不可能です。

投稿2019/03/19 01:48

編集2019/03/19 01:49
CHERRY

総合スコア25171

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

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

d04062

2019/03/19 02:13

ご丁寧にありがとうございます。 なるほど、諦める納得ができました! そうすると、サーバー移設した際は、全てのhtaccess内にパスを書き換えないといけないってことですよね。 相対パスも使えないし、不便だなとは思っていたのですが、仕方ないですね。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問