我想在没有整个页面的情况下阻止直接观看图片。
如果有人去
mysite.com/images/image1.jpg转发到mysite.com/image1.htm
mysite.com/images/image2.jpg转发到mysite.com/image1.htm
mysite.com/images/image3.jpg转发至mysite.com/image2.htm
mysite.com/images/image4.jpg转发至mysite.com/image2.htm
Htaccess是最好的方法吗?我将如何设置它?
答案 0 :(得分:0)
您可以检查“Referer”请求标头。浏览器有时会使用它来告诉服务器哪个URL告诉浏览器加载文件。但是,并非所有浏览器都会使用引用标头,并且它很容易被伪造,因此这不能确保直接链接到您的图像。
您可以在htaccesss文件的顶部添加:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?://mysite\.com/
RewriteRule ^images/(.+)\.jpg$ /$1.html [L,R]
答案 1 :(得分:0)
阅读评论时,我建议避免为 N 图片维护 N RewriteRule
s。对于需要为网站上的每个新图像复制并粘贴新规则的网站管理员来说,这样的设置将变成维护噩梦。如果你需要改变规则,那么......祝你好运。
如果您可以灵活地选择更好的目录结构,它可以将.htaccess文件简化为单个重写规则。在这种情况下,您可以选择一个目录结构,在该目录结构中,给定图像的路径,您可以轻松确定其所属页面的路径。例如:
root/
.htaccess
page1/
index.html
image/
image1.jpg
image2.jpg
page2/
index.html
image/
img.jpg
这里root/.htaccess
中的重写定义很简单(改编自@ jon-lin的回答):
# Rewrite any image URL `/<page>/images/*` to `/<page>/`.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https?://mysite\.com/
RewriteRule ^([^/]+)/image/ /$1/ [L,R]
RewriteRule
来统治他们。/<page>/image/
。