更具体地说,我有一个htaccess文件,限制任何人看到目录内容。这样,没有人可以通过使用:
在www.example.com/images中看到我的1000张图像deny from all
allow from 127.0.0.1
但是,我想在www.example.com上使用这些图片,
<img src="images/thisimg.jpg" />
有效。
我希望我的方向正确,但我很欣赏任何见解/重新指导。这类似于:How to protect all directory contents, but gain access to php script但我想链接到该目录中的这些图像,并且使用deny from all
不允许我这样做。
提前感谢您的帮助。
答案 0 :(得分:42)
答案 1 :(得分:24)
让人们看不到目录内容的所有内容都是该文件夹中的index.php或.html文件。任何对yoursite.com/images的请求都会加载index.php,您将设置为虚拟页面。
index.html可能是这样的:
<html><title>Forbidden!</title><body>Nothing to see here...</body></html>
或重定向脚本index.php:
<?php header('Location: /index.php'); exit(); ?>
不要使用.htaccess来阻止目录列表,它会阻止对所有内容的访问。
答案 2 :(得分:17)
您无需像这样创建索引文件 -
<html>
<title>Forbidden!</title>
<body>
<h1>Access Denied !!</h1>
</body>
</html>
&#13;
并将其放在您不想向用户显示的每个资源目录和目录中。
您可以在.htaccess文件的末尾添加它 -
Options -Indexes
因此,您的 .htaccess
文件可能是这样的 -
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Options -Indexes
</IfModule>
如果你这样做并尝试去一个目录,你会得到这样的东西 -
因此,没有人能够发现服务器中的任何目录。
可以找到更多here。
答案 3 :(得分:3)
最简单的解决方案:在图片文件夹中创建空白页面名称index.html
:)
答案 4 :(得分:2)
在.htaccess文件中使用类似的内容:
#
###################################################################
### ###
### Currently protection ###
### images (jpg, jpeg, gif, png, bmp) ###
### JavaScript (js) ###
### Cascading Style Sheets (CSS) ###
### ###
###################################################################
#
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|js|css)$ http://access- denied.us/hotlinks.html [NC,L]
</ifModule>
#
这将允许您的页面加载您想要的文档和图像,同时阻止所有人使用它们。我在我的所有网站上都使用它,效果很好。
答案 5 :(得分:1)
对我而言,我认为完成任务的最简单方法是使用重定向。在图像目录上,只需创建一个索引页面,并在索引页面中重定向到您的站点索引页面,即
<?php
header( 'Location: http://www.yoursite.com' ) ;
?>
因此,每当有人试图直接访问图片页面时,他们最终会转到您网站的根目录。
答案 6 :(得分:0)
如果是我,我只是确保推荐人是www.example.com,这是其中一个主要用途。
答案 7 :(得分:0)
Magicianeer的建议是这个问题的最佳选择。如果您的图像被分成子文件夹,则必须在每个文件夹中放入一个索引文件。 '选项 - 索引'只需要在根目录下完成一次。
答案 8 :(得分:0)
deny from all
允许服务器端脚本使用文件,但限制完整的Web访问。
答案 9 :(得分:0)
在您要禁止访问的文件夹中 创建一个名为index.php的文件并粘贴此代码
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access This Folder
on this server.</p>
</body></html>
&#13;
答案 10 :(得分:0)
我使用的技巧让人们认为他们已经访问了一个不存在的文件夹。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>404 Not Found</title>
</head>
<body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body>
</html>
&#13;