【问题标题】:Redirect based on only part of referring URL仅基于引用 URL 的一部分进行重定向
【发布时间】:2015-06-21 13:23:26
【问题描述】:

我正在与一个客户合作,该客户的网站包含许多子域,这些子域代表他的锁匠业务所涵盖的不同领域。他从目录网站获得了大量流量,并且只想将他的域用作这些网站上的链接。当有人点击它时,他希望他们根据引用 URL 中的关键字进行重定向。

例如,引用的 Yell URL 可以是

yell.com/ucs/UcsSearchAction.do?keywords=locksmith&location=Watford%2C+Hertfordshire&scrambleSeed=1311994593

客户希望 htaccess 或类似的东西从该 URL 中挑选出关键字 'Watford',并相应地重定向到 watford.hisbusiness.com

这不是我以前做过的事情,我很困惑。研究没有发现任何线索。

【问题讨论】:

    标签: php .htaccess redirect


    【解决方案1】:

    您可以查看HTTP_REFERER 以从引用 URL 中获取信息。

    RewriteEngine on
    
    RewriteCond %{HTTP_REFERER} yell\.com/.*\?.*\&location\=(\w+)\%2C\+(\w+)
    RewriteRule ^$ http://${lower:%1}.hisbusiness.com/ [R=302,L]
    

    ${lower:$1} 用于使 Watford 小写。为了使其正常工作,您需要将以下内容添加到您的 httpd.conf 或虚拟主机配置文件中:

    RewriteMap lower int:tolower
    

    注意: 上面的规则仅适用于域根 (hisbusiness.com) - 也就是说,对 hisbusiness.com/something 的请求不会触发重定向。如果您也希望它检查 URI,请改用以下规则:

    RewriteRule ^(.*)$ http://${lower:%1}.hisbusiness.com/$1 [R=302,L]
    

    要使重定向永久并由浏览器/搜索引擎缓存,请将 302 更改为 301

    【讨论】:

      【解决方案2】:

      使用您所需的条件在 PHP 上使用 Header

      if(condition 1){
      header("Location: http://mywebsite1.com");
      }
      
      if(condition 2){
      header("Location: http://mywebsite2.com");
      }
      
      else{
      header("Location: http://mywebsite3.com");
      }
      

      你可以在 if 条件上使用[stristr][1]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-28
        • 2016-05-06
        • 1970-01-01
        • 1970-01-01
        • 2016-03-08
        • 1970-01-01
        • 2019-10-28
        • 2015-05-30
        相关资源
        最近更新 更多