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 -----------
La forma más sencilla de hacerlo es agregar las imágenes a las publicaciones y páginas que son privadas.
Enlaces Útiles:
https://codex.wordpress.org/Content_Visibility
https://en.support.wordpress.com/pages/page-visibility/
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.