我有一个软件包放在我网站的根目录中。我希望所有来自其他网站的访问者在下载之前先看到主页。在不使用脚本的情况下如何做到这一点?
问问题
507 次
1 回答
2
Apache 的 mod_rewrite 可以做到这一点。它可以测试“HTTP_REFERER”变量并创建重定向。
来自http://httpd.apache.org/docs/2.0/misc/rewriteguide.html的示例
描述:
假设我们在 http://www.quux-corp.de/~quux/下有一些内嵌 GIF 图形的页面。这些图形很好,所以其他人通过超链接直接将它们合并到他们的页面。我们不喜欢这种做法,因为它给我们的服务器增加了无用的流量。解决方案:
虽然我们不能 100% 保护图像不被包含,但我们至少可以限制浏览器发送 HTTP Referer 标头的情况。
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]
RewriteRule .*\.gif$ - [F]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !.*/foo-with-gif\.html$
RewriteRule ^inlined-in-foo\.gif$ - [F]
其他变体http://articles.sitepoint.com/print/apache-mod_rewrite-examples
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/.*$ [NC]
RewriteRule \.(gif|jpg|png)$ http://www.example.com/hotlinked.gif [R=301,L]
第一行检查referer是否为空。第二 - 如果它不是您的域。第三个将“错误查询”重定向到“hotlinked.gif”
于 2010-03-03T08:47:31.440 回答