2011-04-12 12 views
0

私はWordPressのインストールで特定のページを持っています(WordPressの実際のページ、Pretty URLのみ)。私に提供された.htaccessファイルでパスワードで保護します。.htaccessで特定のWordPressページを保護する

たとえば、ページはhttp://www.myawesomewebsite.com/membersです。私は一部のユーザーだけにアクセスさせたいと思っており、そのユーザーとパスワードは.htpasswdファイルに保存されています。

.htaccessファイルは、私に送られたクライアントは、私は、このWordPressのページを保護するために、このパラメータを使用する必要が

AuthUserFile /put the path to the password file here 
AuthGroupFile /dev/null 
AuthName RESTRICTED 
AuthType Basic 

<Limit GET POST> 
require valid-user 
</Limit> 

です。私は夢中になり、私の検索はどこにも至っていません。どんな推測?

答えて

0

あなたがする必要があるのは、.htaccessファイルを「members」ディレクトリに置き、最初の行をパスワードファイルにポイントすることだけです。あなたのパスワードファイルを作成するだけで実行します。

htpasswd -c MyPasswordFile username 
htpasswd MyPasswordFile anotherusername 

ここで良いの参照です:

http://httpd.apache.org/docs/current/howto/htaccess.html

+1

WordPressページを保護する必要があります。これはフォルダではありません。 –

0

Wordpressのは、あなたがパスワードを使用してページ/投稿を保護することができます(そして、それはよりも、このルートを行くことではなくeasyerですhtaccessを使って):wp-adminに行き、ページを編集するか、非公開にしたいが一部のユーザーにもアクセスを許可し、 "プレビュー変更"ボタンの下に "ステータス:公開編集"と表示され、 "可視性:Public Edit"可視性の編集をクリックし、パスワード保護されたラジオボックス(またはその件に関してはプライベート)を選択し、パスワードを入力します。 OKを押してください。あなたは行かなくてはなりません。

+0

私は.htaccessを通してそれを行う必要があります。道はない? –

+0

なぜあなたは.htaccessでそれを必要としますか?私はあなたがそれを行うことができればポイントを見ません、私が考えることができる唯一のことは、別のパスワードを持つ複数のユーザーですが、これは個人的なブログ/投稿の魔女と再びatived htaccessより簡単です。 http://wordpress.tv/2009/01/14/setting-your-posts-or-entire-blog-to-private/とhttp://en.support.wordpress.com/posts/で実際に行動してください。ポストビジビリティ/ –

1

私はこれを行うことができました:

  1. の.htaccessで保護されているファイルシステム上のディレクトリ構造を作成します。
  2. 保護するために使用するディレクトリを指定する、保護するページにカスタムフィールドを追加します。
  3. page.phpテンプレートを変更して、ユーザーがカスタムフィールドで指定されたディレクトリにアクセスできるかどうかに応じてページへのアクセスを制限します。次のように具体的な手順がある

  1. ディレクトリを作成し、 "グループ" のwp-コンテンツディレクトリ内。
  2. は、次の内容のwp-コンテンツ/グループ/ index.phpを作成:

    <?php 
    require(dirname(__FILE__) . '/../../wp-load.php'); 
    class CASGroupAuth { 
        static function authenticate(){ 
         $groups = @$_SESSION['cas-groups']; 
         if (!$groups) $groups = array(); 
         $groupdir = basename(dirname($_SERVER['PHP_SELF'])); 
         $groups[$groupdir] = true; 
         $_SESSION['cas-groups'] = $groups; 
         if ([email protected]$_GET['redirect_to']){ 
          die("You didn't provide a redirect"); 
         } 
         header('Location: '.$_GET['redirect_to']); 
         exit; 
        } 
    } 
    CASGroupAuth::authenticate(); 
    
  3. を "グループ" ディレクトリ内のサブディレクトリ "MYGROUP" を作成します。
  4. mygroupsディレクトリ内のgroups/index.phpへのシンボリックリンクを作成します。私。

    $ cd mygroup 
    $ ln -s ../index.php index.php 
    
  5. 適切なアクセス制限を使用してグループ/ MYGROUPディレクトリに.htaccessファイルを追加します。私の場合、私はCAS Apacheモジュールを使用していました。htaccessのファイルは、ように見えた:

    AuthType CAS 
    require sfu-user shannah !my-maillist 
    
  6. があることを(つまり、WP-コンテンツ/テーマ/ mytheme内部/)私のテーマでpage.phpテンプレートを変更します。

    <?php if (have_posts()) : the_post(); 
    $group = get_post_meta(get_the_ID(), 'cas-group', true); 
    if (trim($group)){ 
        $group = trim($group); 
        $existingGroups = @$_SESSION['cas-groups']; 
        if (!$existingGroups or [email protected]$existingGroups[$group]){ 
         nocache_headers(); 
         header('HTTP1.1 302 Moved Temporarily'); 
         header('Location: ' . get_settings('siteurl') . '/wp-content/groups/'.basename($group).'/index.php?redirect_to='.urlencode($_SERVER['REQUEST_URI'])); 
         header('Status: 302 Moved Temporarily'); 
         exit; 
        } 
    } 
    
    ?> 
    <?php get_header(); ?> 
    
        <div id="content" class="narrowcolumn"> 
    
    
         <div id="PageTitle"><!-- TemplateBeginEditable name="PageTitle" --><?php the_title(); ?><!-- TemplateEndEditable --></div> 
         <div class="post" id="post-<?php the_ID(); ?>"> 
          <div class="entry"> 
           <?php the_content('<p class="serif">Read the rest of this page &raquo;</p>'); ?> 
    
    
    
          </div> 
         </div> 
    
        <?php edit_post_link('Edit this entry.', '<p>', '</p>'); ?> 
        </div> 
    
    
    <?php get_footer(); ?> 
    <?php endif; ?> 
    

重要これの一部は上部のセクションです。コードがcas-groupsカスタムフィールドをチェックしてユーザーをリダイレクトするので、出力がブラウザに送られる前に実行する必要があります。これを行うために、if(has_posts())ステートメントの位置を、デフォルトのテンプレートにあるように、コンテンツだけでなくページ全体をラップするように再配置しました。

この時点で、「cas-group」と値「mygroup」という名前のワードプレスサイトの任意のページにカスタムフィールドを追加すると、そのページへのアクセスは、 groups/mygroupディレクトリに.htaccessファイルのルールに基づいています。

異なるグループを使用する場合は、mygroupディレクトリのコピーを作成し、その中の.htaccessファイルの制限を変更するだけです。

+0

これは巧妙な解決策です。 1回ログインすると、そのグループのすべての保護されたURLにアクセスできますか? – supertrue

関連する問題