• お世話になります。
    SSLのかかったWPサイトで特定のカテゴリーにBasic認証をかけたいと考えています。
    クライアントでIDとパスワードを自由に設定していただくため.htaccessではなく、PHPでBasic認証を設定し、最終的にダッシュボードで設定したIDとパスワードを反映させる予定しいています。
    以下のコードでSSLの無いサーバーではBasic認証が作動したのですが、本番サーバーでテストした際、SSLの影響なのか「安全な接続ができませんでした」と接続が拒否されるようです。
    本番サーバーはさくらサーバーのため、.htaccessやwp-config.phpにもSSL対応の独自のコードがあるため、そのあたりが影響しているのかとも思うのですがどこに原因があるかも分からない状態です。
    どなたか対処方法をご存知の方がいらっしゃればご教授いただければ幸いです。
    何卒よろしくお願いいたします。

    functions.php

    
    function basic_auth(
        $auth_list,
        $realm="Staff Area",
        $failed_text="認証に失敗しました。<br/>ブラウザの戻るボタンでお戻りください。"
        ){
        if (isset($_SERVER['PHP_AUTH_USER']) and isset($auth_list[$_SERVER['PHP_AUTH_USER']])){
            if ($auth_list[$_SERVER['PHP_AUTH_USER']] == $_SERVER['PHP_AUTH_PW']){
                return $_SERVER['PHP_AUTH_USER'];
            }
        }
    
        header('WWW-Authenticate: Basic realm="'.$realm.'"');
        header('HTTP/1.0 401 Unauthorized');
        header('Content-type: text/html; charset='.mb_internal_encoding());
    
        die($failed_text);
    }
    

    header.php
    対象カテゴリースラッグ:stafflimit
    ID : test
    パス:0000

    
    <?php if (!is_home()) {
            if (is_category('stafflimit')||in_category('stafflimit')) {
              $userArray = array(
                          'test' => '0000',
                          );
              basic_auth($userArray);
            }
          } ?>
    <!DOCTYPE HTML>
    <html <?php language_attributes(); ?>>
    <head>
    〜
    </head>
    <body>
    〜
    </body>
    

    .htaccess

    
    #sakura SSL
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/wp/wp-cron.php$
    RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
    RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
    </IfModule>
    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    

    wp-config.php

    
    // プロクシでIPが入るとSSLアクセス状態をセットする
    if( isset($_SERVER['HTTP_X_SAKURA_FORWARDED_FOR']) ) {
        $_SERVER['HTTPS'] = 'on';
        $_ENV['HTTPS'] = 'on';
        $_SERVER['HTTP_HOST'] = 'example.com';
        $_SERVER['SERVER_NAME'] = 'example.com';
        $_ENV['HTTP_HOST'] = 'example.com';
        $_ENV['SERVER_NAME'] = 'example.com';
    }
    
    // ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** //
    /** WordPress のためのデータベース名 */
    〜以下デフォルト記載
    〜
    
  • トピック「さくらSSLのWPサイトで特定カテゴリー記事にBasic認証をかけたい」には新たに返信することはできません。