日期:2014-05-17  浏览次数:20852 次

急!!!htaccess 如何获取来自META的跳转,比较急,在线等
【功能需求】当www.zbphp.com 发现访问来路是 www.baidu.com 的时候,立即跳转到 www.baidu.com 里面去。
【涉及网站】
  --> www.baidu.com (跳转来源)
  --> www.zbphp.com (转到的地方)


【ZBPHP.COM备注

①DEDECMS做得程序,全部静态化生成了html文件
②空间Linux PHP5 Apache 支持htaccess
③网站用的是DEDECMS程序
④服务器网页优先级 index.html > index.htm > index.php > default.php


【为什么这么做?】
目的是为了防止竞争对手恶性竞争,比如竞争对手故意将垃圾站跳转到 www.zbphp.com ,那么这样会可能导致www.zbphp.com 被百度或者谷歌K掉。所以必须,只要是来自被限制的垃圾站的网站的来路都要被屏蔽掉,垃圾站的网址域名这个是手动收集的。

【考虑的情况】
  --> META跳转
  --> JS window.location.href 跳转
  --> JS window.open()跳转
  --> PHP Header 301跳转
  --> .htaccess/httpd.ini跳转

【实现代码】
  --> 在 www.zbphp.com 里面的 .htaccess 文件里面加入代码:
Assembly code

RewriteCond %{HTTP_REFERER} baidu.com [NC]
RewriteRule ^(.*)$ http://www.baidu.com/?$1 [L,R=301]



【出现的问题】
  --> 除了META跳转,其他的跳转的访问来路都是可以被 www.zbphp.com 里面的.htaccess 或者PHP的$_SERVER["HTTP_REFERER"] 获取到。

【其他的想法】
① 现在的最佳的考虑是用.htaccess ,那么就可以完全禁止来路是某个网站的访问了。但是htaccess无法获取到meta的跳转过来的。
②而通过PHP 的 $_SERVER["HTTP_REFERER"]也是无法获取到META跳转过来的(META跳转的时候这个值是空的)。
③如果通过javascript来做的话,百度搜索引擎是不是别javascript,那么也就没有意义了,因为这一项就是针对SEO的。


【baidu.com 的META文件内容】
META跳转的HTML文件 http://www.baidu.com/jump-to-zbphp.com.html 全部内容如下:
HTML code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Jump </title>
<meta http-equiv="Refresh" content="1;URL=http://www.zbphp.com" />
</head>

<body>接下来跳转到 www.zbphp.com</body>
</html>


当使用这种方法从www.baidu.com里面跳转到www.zbphp.com里面的时候,www.zbphp.com里面是无法识别访问来源的,就无法跳转到www.baidu.com里面去。
现在要解决的就是如果通过META跳转过来的,如何识别是从META跳转过来的。比较急。

------------------------
【下午补充】
天啊!!!! 发现了另外一个问题了。
原来在firefox里面是可以获取到 js的window.open 和 window.location.href 的。但是IE内核的那种浏览器却无法获取到的。
  --> META跳转 (×)
  --> JS window.location.href 跳转 (×)
  --> JS window.open()跳转 (×)
  --> PHP Header 301跳转 (√)
  --> .htaccess/httpd.ini跳转 (√)

META跳转的必须给获取到啊。帮忙啊~~

------解决方案--------------------
RewriteCond %{HTTP_REFERER} ^http://baidu\.com.* [NC]
RewriteRule ^(.*)$ http://www.baidu.com/?$1 [L,R=301]

------解决方案--------------------
小兵可爱,我来接分了。呵呵!期待关注着!
------解决方案--------------------
meta和js都在html里,不再是http协议里的内容,apache无法获取和判断

meta跳转的无法获取来路,这个问题貌似从apache配置上无解


恶意链接的目标站会被gogle k掉? 就算你跳掉了, 搜索引擎一样记录在案吧?

解决办法有一个:链接后面带上参数,php来判断参数, 但没法判断正常链接的域名

so,忘了这个需求吧
------解决方案--------------------
无解了,接个分吧
------解决方案--------------------
meta属于页面内容了,应该用脚本分析页面内容,如果非要用apache的话,我感觉可以自己编一个钩子,不过这个为什么不用php脚本提取一下那,也不麻烦