WordPressの特定カテゴリでBasic認証を使う方法
できること知ってた上でスタッフに作業をお願いしたら調べもせずに「できません」と即答されたので、ついカッとなってメモを残す。
- Basic認証かけたいカテゴリと同名(スラッグ名)のフォルダを作る
- 作ったフォルダへWPのindex.phpをコピーする
- 作ったフォルダへWPのhtaccessをコピーする
- コピーしたindex.phpの中で「wp-blog-header.php」の参照パスを修正する
- コピーしたhtaccessにBasic認証の記述を加える(htpasswdもアップする)
以上。
プラグインもあるらしいけど、根本的にはこういうことが出来るということで。
追記
サブドメインで運用しているWPの場合、作成したフォルダにコピーした index.php へアクセスするとリダイレクトループが発生します。
その場合、functions.php へ以下一行を追記してください。
remove_filter('template_redirect', 'redirect_canonical');
参考:http://blog.dreamhive.co.jp/mkoba/?p=4739
筆者について
- ゲームとジョジョを愛するファミッ子世代。好きな言葉は「機能美」。
公私ともにWebサービスを作る系男子。
最近の投稿
- 運用2017.03.03nginxのkusanagiにLet’sEncryptをかけてるとiOSで表示されない問題の解決
- 運用2016.07.22分かりにくい「クリエイティブコモンズ」をシンプルに言うと
- WordPress2016.07.12新しいWordPress「Calypso」を試した
- Design2016.03.09Win10アプリのデザインガイドラインが素晴らしい
ちょうどこれと同じ特定ディレクトリのみにかけるアクセス認証処理をしたくていろいろ調べていたのですが、なかなか上手くいかずに頭を抱えておりました。
こんな方法があったとは、目から鱗でした。無事認証をかけることができました。
非常に助かりました。お礼申し上げます。
お役に立てまして幸いです。
特定ディレクトリのベーシック認証で苦しんだ末にこちらへたどり着きました。
通常のドメインに関しては問題なく、お教え頂いた方法で認証をかけることができました。
ただ、サブドメインで管理しているサイトに関しては、[認証]→[ログイン]の動作はできるものの、リダイレクトがループしてしまい、ページが表示されませんでした。
もし解決法がお分かりになるようでしたらお教え頂けるとありがたいです。
最後になりましたが、大変有益な情報を掲載して頂きありがとうございます。
コメントありがとうございます。
たしかにサブドメイン下では物理フォルダのindex.phpにアクセスするとリダイレクトループが発生するのを確認しました。
http://blog.dreamhive.co.jp/mkoba/?p=4739
こちらで紹介されている方法ですが、利用中テーマのfunction.phpにコードを1行加えると解消されましたのでお試しください。
管理人様
お忙しいところ、早速のお返事ありがとうございます。
お教え頂いた方法を試してみたところ、見事にリダイレクトループが解消いたしました。
諦めかけていたのですが、藁にも縋る思いでコメントさせて頂きました。
心より御礼申し上げます。本当にありがとうございました。
解決しましたようで幸いです。
管理人様、初めまして。
ベーシック認証関連の記事を探している中でこちらにたどり着きました。
wordpressでページ全体をベーシック認証にしていたのですが、jetpackプラグインを使用しようとしたところ
サイトが公開されていて、アクセス制限がかかっていない必要があります
というエラー文章が出てしまいました。
.htaccessにベーシック認証が記述されているためかと外したところ連携はできたのですが、再度ベーシック認証を戻したところ投稿は反映されなくなりました。
会員用サイトで個別のID/PASS仕様なのでベーシック認証をはずすわけにもいかず、煮詰まっております。
なにか対応策などありますでしょうか?
お忙しいところすいませんが返答いただけるとうれしいです。
ご質問ありがとうございます。
要件的にあまり気軽に答えられる話でも無いかもしれませんが、会員用サイトならばID/PWをベーシック認証に頼るのは結構BADで、WP本来のユーザ機能を利用した方が良いように思えます。ベーシック認証はサーバ側の権限塞ぐのでご質問のようにWPの動き阻害する割に、セキュリティとしては弱いので。
「Wordpress 会員サイト」で探すと色々情報が見つかると思います。
大雑把には「そのWPにログインしているユーザのみにページを見せる」といったことをすれば要件を満たせると思います。
ベーシック認証で会員サイトを検討されているならアカウントは管理側で作って渡されていると思うので、WPのユーザ管理でも間に合うと思います。
http://code.agnist.jp/wordpress/knowhow/324
以前自分が構築した例ですが、twitterやfacebookでのシングルサインオンもできるので、WPにユーザを持たせたほうが後々の拡張性も高くて便利だと思います。
管理人様、返答ありがとうございます!
ベーシック認証がセキュリティ的に弱いのをよく知りませんでした。非常に勉強になりました。
会員サイトは現在ID/PASSをこちらから個別に設定している状態です。
数が数百あるもので権限で見せる設定が可能なのかと思っていました。
というのも会費制のため更新されなければ閲覧不可にするためにひと手間設定を続けていた次第です。
この度重い腰をあげWPにリニューアルと思い作成中です。
上記の問題が解決できてないのですが現在なぜか新規ユーザー設定をしても管理画面ログインを行うと
Access Denied
のトラブル中です。管理者以外はログインができなくなってしまいました。
サブデレクトリにWPを設定し、htaccessなしでjet packも有効化の状態で上記の症状です。DBにゴミでもたまっているのか解決策が見つからない始末で参っております。
たびたびすいませんが返答いただけるとありがたいです。
追伸。
初心に戻れということでプラグインを無効化しましたところ無事起動しました。
いやはやはじめてはいろいろと未体験だらけです(-_-;)
解決したようでよかったです。
WPはプラグイン同士が干渉してトラブル起きることもしばしばありますんで、基本はプラグイン止めて確認してみるという感じですね~
特定ディレクトリのベーシック認証で苦しんだ末にこちらへたどり着きました。
お教え頂いた方法で認証をかけることができたのですが、
[認証]→[ログイン]の動作はできるものの、表示されるページが500エラーになってしまいます。
利用サーバーはCPIのACE01です。
もし何か解決法がお分かりになるようでしたらお教え頂けるとありがたいです。
大変有益な情報を掲載して頂きありがとうございます。
よろしくおねがいします。
ご質問ありがとうございます。
念のためですが、この記事にあるようにWordpressでのお話という前提で、下記のような状況と考えてよいでしょうか?
・Wordpressにはログインできる
・ベーシック認証は動作する
・認証後に入れたページが500エラー
ベーシック認証だけで500エラーになった経験は無いので、ちょっと情報が足りません。
サーバーの種類はあまり関係ないかなと思います。
「ベーシック認証 500エラー」でググると結構情報が出てきますが、いろいろ試されて手詰まりという状況でしょうか?
自分がやるとしても環境を把握したうえでこの検索結果をすべて試すことになるので、ピンポイントな解決策はすぐ出ないかもしれません。
特定ディレクトリのベーシック認証を解除したいと思い、探していたところこちらへたどり着きました。
特定のディレクトリ配下をベーシック認証解除することは可能でしょうか?
こちらに書かれている方法で、特定ディレクトリのベーシック認証を解除することができたのですが
その配下のディレクトリになってしまうと、ベーシック認証がかかってしまいます。
mod_rewrite等で設定してみたのですが上手くいかず…
解決方法がお分かりになるようでしたら教えていただけると大変ありがたいです。
ご質問ありがとうございます。
https://goo.gl/V22N5F
この辺りはどうでしょうか。
ご参考ください。
管理人様
初めまして。
固定ページの特定カテゴリのベーシック認証を検索していたところこちらにたどり着きました。
カテゴリのスラッグと同名のフォルダをインストールフォルダ下に作成しファイルを置くとBasic認証は動作するのですが
index.phpをスラッグ内にコピーし
4.コピーしたindex.phpの中で「wp-blog-header.php」の参照パスを修正する
をしたところBasic認証もページ表示もされなくなってしまいます。
フルパスで指定してもだめでした。
ルートディレクトリにインストールではなくサブディレクトリにインストールしているので
http://******/wp/slugname/
となっております。
basic認証ファイルを置かずindex.phpのみにしてもページが表示されません。(携帯でアクセスするとToo many Redirectのエラーが出ます。)
解決方法がお分かりになるようでしたらご教授いただけますと大変助かります。
サーバーはさくらインターネットとなります。
質問ありがとうございます。
> Too many Redirectのエラーが出ます。
おそらくリダイレクトループが発生しています。
サブドメインで運用されているサイトでしたら、当コメントはじめの方に対処が掲載されているので、参考にしてみてください。
管理人様ご返信ありがとうございました。
function.phpに追記したところ認証も表示もできるようになりました。
固定ページ(slug)の下にslugを親とする固定ページ(subslug)がある場合さらにフォルダを作成して
slug/subslug
subslugフォルダにindex.phpだけ置いてbasic認証のファイルはおかないで直接subslugのアドレスを呼びだしてもBasic認証画面が出ているので当方の希望通りの動作ですが問題なかったでしょうか?
解決したようで幸いです。
> subslugのアドレスを呼びだしてもBasic認証画面
ベーシック認証の仕様なので問題ありません。
KaBuKi様
お礼を申し上げたくてコメントさせていただきました。
特定カテゴリでのBasic認証を使う方法の時と、
リダイレクトループして困窮してしまった時に、
何をしてもできなかったのに、こちらのサイトのとおりにさせていただくと、すんなり問題が解決いたしました。
ありがとうございます。
心から感謝申し上げます。
今後もこのサイトを活用させていただきたいと存じます。
コメントありがとうございます。
解決にお役立ていただけたようで幸いです!
<スマートフォンでのBasic認証不具合について>
このページのおかげさまで、問題なく運営していたのですが、スマートフォンのアプリ(Yahoo!、Google)などを利用して開くと、「Unauthorized」のエラーになります。
PCサイトでは、問題なく認証画面が出てきます。
スマートフォンでも、Safariで開く分には何の問題もありません。
何機種かのiPhoneで試したりしたのですが、いずれも開きませんが、これはアプリの問題でしょうか?
開発中のサイトはsafariで開けば済む話ですが
Yahoo!アプリでサイトにアクセスする方に会員ページ(Basic認証をしているページ)にアクセスしようとすると『開けない!』と多数問い合わせをいただき、焦っております。
何か解決策があれば、ご教授お願いいたします。
ご質問ありがとうございます。
推測に過ぎませんが自分もアプリ側の問題に思います。
ググった範囲ですが「Unauthorized」表示は401パーミッションエラーだと考えられます。PCで普通に見えるならば本来の仕組み的には問題ない状態だと思えます。
しかしアプリのせいとも言い切れないので、WordPressを介さないBasic認証や、別のサーバーに載せ換えて検証するなど、エンジニアさんに対応をご相談ください。
外的要因が強いので、Basic認証以外の認証方法を用意した方が早いかもしれません。