仅基于部分引用 URL 进行重定向


Redirect based on only part of referring URL

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

例如,引用 Yell URL 可以是

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

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

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

您可以检查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}用于使沃特福德小写。为此,您需要将以下内容添加到httpd.conf或虚拟主机配置文件中:

RewriteMap lower int:tolower

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

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

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

使用所需的条件在 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]