0

我有一个场景,我允许任何人从我的网站热链接图像,但是当它检测到Referer时会显示一个水印。

我已经有水印 PHP GD 脚本,它将获取目录上图像的 url 或完整路径并在其上覆盖水印,但我的问题是这个..

有没有办法设置 htaccess 以仅在检测到非域中的引用者时才重写页面?

此外,抛出 PHP 脚本,一旦重写进入根目录中的特定页面,我能否得到它试图去的地方抛出$_SERVER['REQUEST_URI']以便更容易地了解他们试图查看的图像没有使用 GET 查询?

4

1 回答 1

1

使用 RewriteCond 可能是最简单的。您通常首先检查是否存在Referer 标头,然后将其与允许的值进行比较。但是你也可以使用断言来压缩它:

RewriteCond %{HTTP_REFERER} ^(?!your.domain.com)(.+)$
RewriteRule ^(img/.+)$  /watermark.php?url=$1  [L]

如果您不想要urlGET 参数,则将其设为 PATH_INFO,或使用[L,E=ORIG_REQUEST_URI:$1]. 但是,我会避免这种解决方法。

于 2011-03-17T18:38:03.210 回答