我的网站是关于图像的。所以我想找到一种方法来防止使用(我猜).htaccess直接访问图像文件夹。 从我读过的一种方法是将images文件夹移出web-root,然后使用以下代码添加.htaccess文件:
deny from all
所以这是我的问题:
如果我不将文件夹移到web-root之外,我会遇到任何问题吗?因为我必须对所有页面中的代码进行大量更改。将图像文件夹移到Web根目录之外的逻辑是什么?
还有其他安全的方法吗?我担心如果添加.htaccess将拒绝访问所有图像,那么我将无法共享我的页面并使用其中的图像。
更新
如果我使用以下代码来防止我的图片热链接,但允许它访问特定网站,该怎么办?
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yordomain2.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yordomain3.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://page-to-redirect [NC,R,L]
答案 0 :(得分:1)
如果您将图片文件夹移到网络根目录之外,则不需要.htaccess
。无法从外部访问您的Web根目录之外的目录。
所以你可以两者兼顾,但不能在一起。 无论如何,只要您的图片无法访问,您的图片就无法在您的网站上使用。要在您的网站上显示图片,必须能够加载'。
希望有所帮助。
答案 1 :(得分:1)
1)使用.htaccess将所有对image文件夹的请求重定向到index.php脚本:
# Turn rewriting on
Options +FollowSymLinks
RewriteEngine On
# Redirect requests to index.php
RewriteCond %{REQUEST_URI} !=/index.php
RewriteCond %{REQUEST_URI} !.*\.png$ [NC]
RewriteCond %{REQUEST_URI} !.*\.jpg$ [NC]
RewriteCond %{REQUEST_URI} !.*\.gif$ [NC]
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
2)在你的index.php中做一些逻辑来确定是否应该提供图像。
// Do some checking...
$safe = true; // determine if the image should be served
if($safe){
header("content-type: image/png"); // or gif or jpg
readfile($_GET['q']);
}
答案 2 :(得分:1)
我使用它来解决同样的问题:
Options -Indexes
RewriteEngine On
# Only from this website
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com [NC]
RewriteRule \.(jpe?g|gif|png|bmp)$ - [NC,F]
# To prevent access to crawlers
RewriteCond %{HTTP_USER_AGENT} (?:google|tineye) [NC]
RewriteRule \.(jpe?g|gif|bmp|png)$ - [NC,F]
它并不真正阻止对图像的访问,而是访问其他网站页面。
答案 3 :(得分:0)
您可以添加.htaccess
Options -Indexes
以防止查看图片文件夹内容。
您可以将索引文件放入images文件夹的另一种方法。
如果您在页面上发布了一些图像,则无法限制它们的下载。