如何使用htaccess重定向第一次访问者

时间:2011-08-19 21:08:05

标签: .htaccess redirect

如何使用基于引荐来源的htaccess将首次使用者重定向到特殊目标网页?我的意思是,如果他们来自另一个域,那么他们是第一次访问者?

我在网址改写方面真的很棒,解释会很棒。

注意:登录页面只是一个检测浏览器的php脚本。在该页面上,我将使用cookie,但如果引用者为空或来自其他域,则需要重定向用户。

3 个答案:

答案 0 :(得分:1)

我建议:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^(www\.)?(https?://)?example\.com[NC] 
RewriteCond %{REQUEST_URI} !^/welcome.html [NC] 
Rewriterule ^(.*)$ http://example.com/welcome.html [r=307,L]

第一次RewriteCond检查referer是否包含您的域名,第二次检查您是否只是由RewriteRule重定向。 RewriteRule将您带到欢迎页面作为[L] ast规则。

答案 1 :(得分:0)

如果他的引用者不是你的域名,那么如何重定向使用?

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^(www\.)?(https?://)?(?!example\.com) [NC]
Rewriterule ^(.*)$ http://example.com/welcome.html [r=307,NC]

这意味着如果用户在地址栏中编写example.com或来自其他网站的链接,则会将用户重定向到welcome.html。进入您的网站后,如果他在您的网站上加载了其他网页,则不会再重定向。

P.S。 AFAIK您可以在PHP中使用生成简单html页面的cookie,请参阅here

修改:更新经过测试的代码

答案 2 :(得分:0)

请再加热一次旧牛排。.我仍然想知道是否有人知道该问题的解决方案-不使用cookie或HTML5功能...

我已读过here,HTTP_REFERER可能为空。这就是为什么这种重定向方法不适合该应用程序的原因吗?我已经在服务器上对此进行了实验,但是最接近结果的工作结果总是被重定向到我的目标网页index.htm,这是不希望的。

该规则会干扰其他重写规则吗?

此外,前面的代码段中有一个错误:

我认为后面的代码片段中的NC标志没有意义。应该不是L吗?

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^(www\.)?(https?://)?example\.com[NC] 
#missing space after .com and before [----------------here----^
RewriteCond %{REQUEST_URI} !^/welcome.html [NC] 
Rewriterule ^(.*)$ http://example.com/welcome.html [r=307,L]


RewriteEngine on
RewriteCond %{HTTP_REFERER} ^(www\.)?(https?://)?(?!example\.com) [NC]
Rewriterule ^(.*)$ http://example.com/welcome.html [r=307,NC]
#Should this flag not be L? ------------------------------^