我想弄明白这是可能的。
我有两个文件:main1.html和main2.html
默认情况下,我将用户发送到main1.html,但是来自特定网站的特定用户(我检查这些用户的推荐信息)会发送到main2.html。
不幸的是,其中一个特定网站正在将数百个不同子域的用户作为推荐人发送。
在正常情况下,我使用.htaccess:
RewriteEngine On
RewriteCond %{HTTP_REFERER} .*xxx.org.*$ [OR]
RewriteCond %{HTTP_REFERER} .*yyy.org.*$ [OR]
RewriteCond %{HTTP_REFERER} .*zzz.com.*$ [OR]
RewriteCond %{HTTP_REFERER} .*aaa.net.*$
RewriteRule ^(.*)$ http://your_site/different_page/
或PHP
$refs = array("http://referer1.com","http://referer2.com");
if (in_array($_SERVER['HTTP_REFERER'],$refs)) {
header("location: http://redirected_here.com");
}
但是添加手动这些子域是不可能的。
我有办法从所有子域重定向用户,而无需手动将这些子域添加到.htaccess吗?
答案 0 :(得分:1)
您可以通过从引荐来源网址中提取“主机”位并从左侧比较来检查引荐来源网址是否是所定义域名的子域名:
// Define the domain list. Redirect if user is from one of these domains
$domains = Array('example.com', 'another.com');
// Extract the 'host' component of the referrer URL
$url_info = parse_url($_SERVER['HTTP_REFERER']);
if (isset($url_info['host'])) {
foreach($domains as $domain) {
// Match the referrer from the left side to check if referrer is subdomain
if (substr($url_info['host'], -strlen($domain)) == $domain) {
header("location: http://redirected_here.com");
}
}
}