Сначала вам нужно проанализировать строку реферера, если она не пустая. Это можно сделать разными способами.
Рассмотрим эту строку в стиле Google:
<p><a href="referer.cfm?q=become+a+business+coach&ie=utf-8&oe=utf-8">test</a></p>
То же самое referer.cfm должен выполнить проверку.
Скажем, самый простой и совершенно не гибкий способ - поиск по рефереру:
<cfif cgi.HTTP_REFERER NEQ ""
AND FindNoCase("business", cgi.HTTP_REFERER)
AND FindNoCase("coach", cgi.HTTP_REFERER)>
<cflocation url="http://where.you.want.to.go.tld/" addtoken="false">
</cfif>
Более продвинутым подходом может быть поиск по ключевым словам поискового запроса. Сначала вы должны разбить строку:
<cfif cgi.HTTP_REFERER NEQ "">
<!--- extract the search phrase --->
<cfloop list="#cgi.HTTP_REFERER#" delimiters="&" index="token">
<cfif FindNoCase("?q=", token)>
<cfset phrase = ListLast(token, "?q=") />
<!--- extract the keywords --->
<cfloop list="#phrase#" delimiters="+" index="keyword">
<!--- search needed keyword and perform relocation --->
</cfloop>
</cfif>
</cfloop>
</cfif>
Как искать ключевое слово - зависит от вас, может быть, запросить базу данных и найти совпадения, возможно создать конфигурацию непосредственно в коде. В обоих случаях я использовал набор структур, как в этом примере:
<cfset rule = StructNew() />
<cfset rule["keywords"] = "become,business,coach" />
<cfset rule["url"] = "http://where.you.want.to.go.tld/" />
Когда ключевые слова соответствуют поисковой фразе, используйте url для перемещения.