WordPressで特定のディレクトリにベーシック認証をかける
目次
下階層にベーシック認証
WordPress関係なく特定のディレクトリにベーシック認証をかけたい場合、対象のディレクトリに.htaccessと.htpasswdを置く! という記事が大量にでてきます。
でもそれだけだと、WordPressでは404エラーになってしまいます。
例えば、カスタム投稿「secret」のアーカイブと詳細ページにベーシック認証をかけたいので/secretディレクトリを作成して.htaccessをおくと、ディレクトリが存在するために/secret/index.htmlや/secret/index.phpを探しにいってしまうからです。
ということは、/secret/index.phpがあれば404にはなりません。
/secretディレクトリを作成し、.htaccess、.htpasswd、そして下記のindex.phpを置きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php /** * Front to the WordPress application. This file doesn't do anything, but loads * wp-blog-header.php which does and tells WordPress to load the theme. * * @package WordPress */ /** * Tells WordPress to load the WordPress theme and output it. * * @var bool */ define('WP_USE_THEMES', true); /** Loads the WordPress Environment and Template */ require( dirname( __FILE__ ) . '/../wp/wp-blog-header.php' ); |
こちら、見覚えあるかと思います。rootにあるindex.phpの相対パスを変更しただけのファイルです。
rootにある.htaccessだけでどうにかしようと思って、正規表現などにかなり悩んだのですが、思いついてみればあっさりしたものでした。