我的.htacess文件中有此代码,并将http://www.example.com/wp-content/wp-content/uploads/2016/10/063.jpg
重定向到www.example.com/wp-content/show-image.php?path=http://www.example.com/wp-content/wp-content/uploads/2016/10/063.jpg
不知何故,它有效,并且它也不会重定向www.example.com/wp-content/show-image.php?path=http://www.example.com/wp-content/wp-content/uploads/2016/10/063.jpg
。
RewriteEngine On
RewriteRule ^([^\.]+)\.(jpe?g|png) http://www.example.com/wp-content/show-image.php?path=http://www.example.com/wp-content/$1.jpg [R=301,NC,L]
问题是它还会在<img src=""/>
中重定向图像。我希望<img src="http://www.example.com/wp-content/wp-content/uploads/2016/10/063.jpg" />
能够加载,而不是重定向。
关于如何做到这一点的任何想法?
答案 0 :(得分:0)
真正做到这一点的唯一方法是在不修改URL的情况下检查HTTP Referer。 Referer未设置为直接请求,但在请求来自嵌入式src
属性时设置(到您的域)。
但是,这很容易出错,因此不建议在专业环境中使用。浏览器可能被配置为无论如何都不在请求中发送Referer,甚至可能是伪造的。
无论如何,您可以通过插入条件检查来实现此目的。即。仅在Referer未设置为预期主机时重定向:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://www\.example\.com
RewriteRule ^([^\.]+)\.(jpe?g|png) http://www.example.com/wp-content/show-image.php?path=http://www.example.com/wp-content/$1.jpg [R=301,NC,L]
!
前缀否定 CondPattern 。
但是,除非您包含其他例外,否则这也会阻止Googlebot等查看您的图片网址。 更新并且通常建议允许空的Referer
标头,但这会允许直接请求(但这可能是Google图片搜索和Googlebot不需要发送{抓取时标头{1}}例如,您可以尝试:
Referer
(顺便说一句,你不需要在字符类中转义点以匹配文字点。)
这将阻止其他网站直接链接到您的图片(即。热链接)。
否则,您可以通过某种方式更改嵌入图像的URL。例如。将RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !google
RewriteCond %{HTTP_REFERER} !^http://www\.example\.com
RewriteRule ^([^.]+)\.(jpe?g|png)$ http://www.example.com/wp-content/show-image.php?path=http://www.example.com/wp-content/$1.jpg [R=301,NC,L]
附加到网址末尾,然后在?noredirect=1
条件中检查此内容:
.htaccess