una tamaño pixeladas pesar para imagenes imagen formulario filtro destacada debe cuanto con busqueda buscador php wordpress .htaccess wordpress-plugin

php - tamaño - seo imagenes wordpress



Hacer imágenes privadas en Wordpress (4)

Estoy haciendo un sitio, que me gustaría hacer en privado. La parte más importante, es que las imágenes en el dominio no se pueden ver, sin que el usuario inicie sesión primero. Así que me gustaría que todo el tráfico se redirigiera a www.DOMAINNAME.com/wp-admin (también para imágenes), si el usuario no ha iniciado sesión.

Esto es lo que he intentado:

1) Plugins. He intentado el inicio de sesión de Wordpress Force , el complemento wp-require-login y una página Próximamente y el modo de mantenimiento .

2) Añadiendo una función de esta respuesta . Cual es este:

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'' );

Ninguna de estas cosas redirige el tráfico, si voy a la URL directa de la imagen (como http://www.DOMAINNAME.com/uploads/2015/10/foobar.jpg ).

¿Se puede hacer eso?

----------------- EDIT 1 --------------

Mevius señaló que es posible que Wordpress no se cargue si escribe la URL directa a una imagen, por lo que sugiere que se haga en el nivel de apache.

------------- FIN DE LA EDICIÓN 1 -----------



Puedes hacer esto tan complicado o tan simple como quieras. Lo más sencillo es verificar la referencia según lo sugerido por Hemnath Mouli, pero eso se puede falsificar fácilmente.

Sin embargo, si quieres ir muy profundo ...;)

Utilice el archivo .htacess con una RewriteRule para volver a escribir todas las imágenes en un script PHP que arranque Wordpress y verifique el estado de autenticación del usuario. También debe agregar un archivo .htaccess a su carpeta de imágenes para denegar el acceso directo a la carpeta para excluir los casos de borde.

ADVERTENCIA: ¡ESTE CÓDIGO ES SOLO UNA PRUEBA DEL CONCEPTO PARA INICIARSE!

.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);


Utilizar .htaccess

RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www/.)?localhost [NC] RewriteCond %{HTTP_REFERER} !^http://(www/.)?localhost.*$ [NC] RewriteRule /.(gif|jpg)$ - [F]


Utilizar .htaccess

RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www/.)?localhost [NC] RewriteCond %{HTTP_REFERER} !^http://(www/.)?localhost.*$ [NC] RewriteRule /.(gif|jpg)$ - [F]

Devuelve 403 si accede a la imagen directamente, pero permite que se muestren en el sitio.