我在 .htaccess 文件中使用Options +FollowSymLinks -MultiViews
,该文件存储在图片文件夹上方的 1 个文件夹中,但这会导致在通过 URL 输出到页面上时无法看到这些目录中的图片。一旦我从 .htaccess 中删除它,所有图片都可以正常显示。
以下是我拥有的整个 .htaccess 文件:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ http://%{HTTP_HOST}/ [R=301,L]
<img>
这有什么问题吗?因为在标签 src 属性中输出图像时,图像根本就不会显示。
在实际的图像目录中,我有另一个 .htaccess 文件,如下所示:
<FilesMatch "\.(jpg|jpeg|png|gif|bmp)$">
<IfModule mod_headers.c>
Header unset Pragma
FileETag None
Header unset ETag
Header set Cache-Control "max-age=864000, public, must-revalidate"
Header unset Last-Modified
</IfModule>
</FilesMatch>
也许有更好的替代方案,可以让我在服务器上的文件夹中正常查看图像?老实说,我想知道到底是什么导致了这种情况。
删除此行是否会导致任何安全风险? Options +FollowSymLinks -MultiViews
我可以简单地将其替换为: Options -Indexes
?
基本上,我仍然希望文件夹中的文件可以访问,但我不希望在浏览文件夹的 URL 时,所有文件都显示在那里,如果你明白我的意思。另外,我想知道,是否可以这样做,以便它只接受来自我的服务器的文件,而不接受任何其他服务器的文件?如果可能或甚至有意义......?
答案1
当我遇到这样的问题时,我做的第一件事就是查看返回的实际 HTTP 响应标头。
最简单的方法是使用 curl 命令(http://curl.haxx.se/download.html):
curl -D headers.txt http://my_url.com
这会将响应标头保存到 headers.txt,这应该能让您更好地了解实际情况。希望这足以为您指明解决方案。