Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 如何使用htaccess重定向第一次访问者_.htaccess_Redirect - Fatal编程技术网

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

.htaccess 如何使用htaccess重定向第一次访问者,.htaccess,redirect,.htaccess,Redirect,如何使用基于推荐人的htaccess将首次用户重定向到特殊登录页?我的意思是,如果他们来自另一个领域,那么他们是第一次访问 我真的不知道在url重写和解释将是伟大的 注意:登录页只是一个检测浏览器的php脚本。在该页面上,我将使用cookie,但如果引用者为空或来自另一个域,则需要重定向用户。如果他的引用者不是您的域,如何重定向使用 RewriteEngine on RewriteCond %{HTTP_REFERER} ^(www\.)?(https?://)?(?!example\.com)

如何使用基于推荐人的htaccess将首次用户重定向到特殊登录页?我的意思是,如果他们来自另一个领域,那么他们是第一次访问

我真的不知道在url重写和解释将是伟大的


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

如果他的引用者不是您的域,如何重定向使用

RewriteEngine on
RewriteCond %{HTTP_REFERER} ^(www\.)?(https?://)?(?!example\.com) [NC]
Rewriterule ^(.*)$ http://example.com/welcome.html [r=307,NC]
这意味着,如果用户在地址栏中写入example.com或来自另一个站点的链接,他将被重定向到welcome.html。一旦进入你的站点,如果他在你的站点中加载另一个页面,它将不再被重定向

另外,您可以在PHP中使用cookies生成普通html页面,请参见

编辑:更新测试代码

我建议:

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]
第一次重写第二次检查referer是否包含您的域名,第二次检查您是否仅被重写规则重定向。
重写规则作为最后一条规则将您带到欢迎页面。

请原谅我再次重新加热旧牛排。。我仍然有兴趣知道是否有人知道这个问题的解决方案-不使用cookie或HTML5功能

我读到HTTP_REFERER可能是空的。这就是为什么这种重定向方法不适合此应用程序的原因吗?我已经在我的服务器上进行了试验,但最接近的结果是工作结果总是被重定向到我的登录页index.htm,这是不需要的

此规则会干扰其他重写规则吗

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

我认为后一段代码中的NC标志没有意义。难道不是我吗

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? ------------------------------^

你说的第一次来访是什么意思?如果你正在寻找一个以前从未见过你的网站的人,你不能做到这一点。您可以尝试使用cookies查看浏览器是否加载过您的站点…为什么需要使用
.htaccess
?这可以使用php进行检查,但站点是纯html的why@jasonaburton-更新的代码,仍然有问题,它将匹配域正则表达式“example\.com”之后的任何字符,我现在时间不够,如果有人能解决这个问题,我会稍后再来。虽然这可能是一个有用的答案(我个人不知道),但添加一些解释会大大提高它的有用性。对我来说不起作用。最初的重定向是有效的,但一旦我进入域名并尝试访问另一个页面,我仍然会被重定向回来。嗨@wiktoria,我认为这个问题本身需要一个新的帖子。像这样一个老问题,你不可能有答案。