Htaccess直接将图像链接到页面

时间:2015-01-06 02:30:14

标签: image apache .htaccess mod-rewrite redirect

我想在没有整个页面的情况下阻止直接观看图片。

如果有人去
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是最好的方法吗?我将如何设置它?

2 个答案:

答案 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来统治他们。
  • 您的图片不必是.jpg,只要它们位于/<page>/image/

缺点

  • 需要重新组织现有文件。
  • 非常适合重写问题的目录结构。页面访问&#34;属于&#34;的图像会很尴尬。到另一页。