如何使用htaccess

时间:2015-12-07 14:43:08

标签: apache .htaccess mod-rewrite

我的网站是关于图像的。所以我想找到一种方法来防止使用(我猜).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]

4 个答案:

答案 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文件夹的另一种方法。

如果您在页面上发布了一些图像,则无法限制它们的下载。