我们目前正在使用 webroot 中的文件夹来存储我们在需要登录的视图中加载的图像和视频(使用通常的 html 图像助手)。
我怎样才能防止外部访问者只是做一个site.com/img/photos/1.jpg
url 并访问图像?据我了解,我不能真正使用媒体视图在正确的视图中渲染图像,而且我不知道是否有通过 htaccess 操作的解决方案。
这方面的最佳做法是什么?也许选择使用非 webroot 文件夹是最好的(尽管这会使文件存储部分变得更加困难)?
正如poncha建议的那样,我尝试将主 .htaccess 文件编辑到这个
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !localhost
RewriteCond %{REQUEST_URI} ^app/webroot/img/
RewriteRule .* / [L,F]
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
但是重写基线似乎禁止访问整个站点,没有它,img 访问似乎没有任何变化。
编辑 2:在 webroot 中编辑 htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
# this RewriteCond is needed to avoid rewrite loops
RewriteCond %{REQUEST_URI} !^/app/webroot/
RewriteRule (.*) app/webroot/$1 [L,R]
RewriteCond %{HTTP_REFERER} !127.0.0.1
RewriteCond %{REQUEST_URI} ^/app/webroot/img/
RewriteRule .* - [L,F]
</IfModule>