基于cookie值的htaccess重定向

时间:2012-02-19 03:24:56

标签: php jquery .htaccess

我已经在谷歌搜索了一段时间,但却未能找到解决方案。

我需要将我网站的用户重定向到欢迎页面,前提是他们之前没有访问过该网站。

如果这是假的,我将存储一个hasVisited cookie并重定向,并将其设置在欢迎页面上。

我可以在PHP和jQuery中使用它,但是当它检查是否设置了cookie时,它首先加载默认页面内容然后重定向。看起来也不行。

我所追求的是: a - 使用htaccess会在重定向之前先停止默认页面加载 b - 如何做到以上

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:2)

你需要用PHP进行cookie检查,然后调用header(“Location:http://your-url.com/”)来重定向它们

if (!isset($_COOKIE['hasVisited']) {
    header("Location: http://example.com/welcome.php");
}

请注意,这将影响搜索引擎优化 - 谷歌只能查看您放入此文件的每个php文件的欢迎页面。您可以添加此文件以允许谷歌通过支票

if (!isset($_COOKIE['hasVisited'] && !strpos($_SERVER[‘HTTP_USER_AGENT’],"Googlebot"))

答案 1 :(得分:2)

您不需要使用PHP。您只需使用重写规则即可。如何维护以前的上下文取决于您是否对参数使用SEO优化编码或传统参数编码。所以

RewriteEngine On
RewriteBase   /

RewriteCond   %{HTTP_COOKIE}        !\bhasVisited=       [NC]
RewriteRule   (?:!welcome\.php\b)(?=\.php\b)(.*)  welcome.php?page=$1 [QSA,L]    

规则的第一点是防止它发射两次。第二个限制为php脚本(您不希望welcome.php使用的CSS也被重定向)。您还需要存储初始URI,以防访问者想要继续他或她的初始请求。

这种方法比替代PHP检查更简单 - 当然需要将其添加到每个脚本中。