Zet*_*eth 19 php wordpress .htaccess wordpress-plugin
我正在制作一个网站,我想私下.最重要的部分是,如果没有用户首先登录,则无法看到域上的图像.因此,如果用户未登录,我希望将所有流量重定向到www.DOMAINNAME.com/wp-admin(也适用于图片).
这是我尝试过的:
1)插件.我已经尝试了Wordpress Force登录,插件wp-require-login和即将推出的页面和维护模式.
2)从这个答案添加一个功能.这是:
function is_login_page() {
return in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) );
}
function wpse_make_blog_private() {
if ( ! is_user_logged_in() && ! is_admin() && ! is_login_page() ) {
global $wp_query;
$wp_query->set_404();
}
}
add_action( 'wp', 'wpse_make_blog_private' );
Run Code Online (Sandbox Code Playgroud)
如果我转到图片的直接网址(例如http://www.DOMAINNAME.com/uploads/2015/10/foobar.jpg),则这些内容不会重定向流量.
可以这样做吗?
-----------------编辑1 --------------
Mevius指出,如果您输入图像的直接URL,可能无法加载Wordpress,因此他建议,它应该在apache级别完成.
-------------编辑结束1 -----------
Ric*_*ote 12
您可以根据需要将其设置为复杂或简单.最简单的是按照Hemnath Mouli的建议检查推荐人,但这可能很容易欺骗.
但是,如果你想要真的很深......;)
将.htacess文件与RewriteRule一起使用,将所有图像重写为一个PHP脚本,引导Wordpress并检查用户的身份验证状态.此外,您应该将.htaccess文件添加到images文件夹,以拒绝直接访问该文件夹以排除边缘情况.
警告:这个代码只是证明你已经开始的概念!
的.htaccess
RewriteRule ^(.*\.(jpg|gif|png))$ isAuthenticated.php?path=$1
isAuthenticated.php
require_once("wp-blog-header.php");
$allowedExtensions = array("jpg", "gif", "png");
$path = $_SERVER["DOCUMENT_ROOT"].DIRECTORY_SEPARATOR.$_REQUEST["path"];
$pathInfo = pathinfo($path);
// Check if the Wordpress user is logged in and if the file extension is allowed
// @see https://codex.wordpress.org/Function_Reference/is_user_logged_in
if (!is_user_logged_in() || !in_array($pathInfo["extension"], $allowedExtensions)) {
header("HTTP/1.1 403 Forbidden");
exit;
}
if(!file_exists($path)) {
header("HTTP/1.1 404 Not Found");
exit;
}
// Display the file and set the correct mimetype
$resource = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($resource, $path);
finfo_close($resource);
header("Content-Type: ".$mimetype);
readfile($path);
Run Code Online (Sandbox Code Playgroud)
hem*_*uli 10
使用 .htaccess
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]
Run Code Online (Sandbox Code Playgroud)
如果直接访问图像,则返回403,但允许它们在现场显示.
| 归档时间: |
|
| 查看次数: |
1642 次 |
| 最近记录: |