web-dev-qa-db-ja.com

ログインしていない場合はユーザーをリダレクト

あなたは私を少しの問題で助けてもらえますか。

解決策、彼が投稿コンテンツのリンク上でファイルをダウンロードする時にログインページにリダイレクトする方法を見つける必要があるので、私はいくつかのファイルを持っていて、ログインしているユーザーだけが利用できるようにしたいです。ログインページでリダイレクトされます。例えば、wp-contentフォルダからすべてのファイルへのアクセス(ダウンロード)を禁止したい、これらのフォルダのいくつかがルートにある、.htaccessファイルを試してみましたが、うまくいかない

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?brt\.keezst\.com/ [NC]
RewriteCond %{REQUEST_URI} !hotlink\.(gif|png|jpg|doc|xls|pdf|html|htm|xlsx|docx|mp4|mov) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*\.(gif|png|jpg|doc|xls|pdf|html|htm|xlsx|docx|mp4|mov)$ http://brt.keezst.com/ [NC]
2
Marko.dev

ありがとう Marcelo Henriques 答え.htaccessファイルでこれを機能させる方法を考え出しました。コードは次のとおりです。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} ^.*(mp3|m4a|pdf|doc|xlsx|docx|xls)$
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule (.*) http://website.com/login/

あなたが登録されていないユーザーから保護したいフォルダに.htaccessファイルを置いてください、そして、それは仕事をします、最後の行はリダイレクトです。

そのため、アンカーリンクを介したファイルアクセスを保護する場合は、特定のフォルダ(アップロード/メディア)からフォルダ内の.htaccessファイルを作成してこのコードを貼り付けます。 403(禁止)だけを望む場合は、RewriteRule (.*) http://website.com/login/[R=403,L]に変更してください。

1
Marko.dev

私はそのためにhtaccessを使用しません。

私がすることは、「ダウンロードページ」テンプレートを作成し、それを使用してファイルを「提供」することです。

そうすることで、is_user_logged_in()Codex でチェックし、wp_login_url()Codex でリダイレクトできます。

ただしてください:

if ( is_user_logged_in() ) :
//file link
else :
    wp_login_url();
endif;

そうする方が簡単で安全だと思います。それ以外にも、後でそれをプラグインにして別のプロジェクトで使用することも、サイトテンプレートを変更しても使用し続けることもできます。

私は請求書だけを保護したいと思ったことを除いて、私は最近同じことを望んだ。

これを.htaccessのWordPress部分の上に置きます。

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^.*wp-content/uploads/invoices/.*
RewriteRule ^wp-content/uploads/(invoices/.*)$ read-file.php?file=$1 [QSA,L]
</ifmodule>

これは、invoicesディレクトリ内のファイルに行きたい人全員をread-file.phpにリダイレクトします。このファイルもWordPressのトップレベルにあります。ユーザーがログインしているかどうかを確認するためにread-file.phpには次のコードがあります。

<?php
// Load wp
require_once('wp-load.php');

// If user is logged in
if( ! is_user_logged_in() ) {

    // Redirect to home
    wp_redirect( url to your login page );
    exit;
}

// Additional checks here
// Headers to open or download the file
// readfile( $file );
// exit;

それが役に立てば幸い!

1
Wilco