如何根据cookie值进行htaccess重定向

时间:2010-10-20 14:07:34

标签: .htaccess cookies redirect

我在谷歌失败了,我在这里找不到答案。对不起,我是htaccess的新手,语法很奇怪,很难学!

你可以看到我在这里要做的事情......

RewriteEngine on
RewriteCond %{HTTP_COOKIE} ^.*user_id=(\d+).*$ [NC]
RewriteRule .* http://localhost/mysite/cache/$1 [R=301,L]
RewriteRule .* http://localhost/mysite/cache/guest [R=301,L]

我正在为每个用户缓存加载速度的页面。如果他们使用cookie登录,我想重定向到正确的HTML缓存文件夹,否则我想加载访客缓存。

现在它进入了一个infi-loop。如果我删除[R = ...然后我得到内部服务器错误。

请帮忙!!!谢谢你!!!

2 个答案:

答案 0 :(得分:8)

这适用于像id=1234这样的Cookie:

RewriteEngine on
RewriteCond %{HTTP_COOKIE} ^id=([0-9]*)$ [NC]
RewriteRule .* http://localhost/mysite/cache/%1 [R=301,L]
RewriteRule .* http://localhost/mysite/cache/guest [R=301,L]

现在你的问题: 确保您的htaccess不适用于您重写的页面!例如,如果您的.htaccess位于/mysite/.htaccess

它将在

中再次使用
http://localhost/mysite/cache/%1

这可能是你无限循环的原因。要解决此问题,请确保htaccess规则未应用于子目录或使用其他目录进行缓存。

答案 1 :(得分:1)

以下是解决此问题的其他人的解决方案:

RewriteEngine on
RewriteRule ^.+$ - [L]
RewriteCond %{HTTP_COOKIE} ^.*user_id=(\d+).*$ [NC]
RewriteRule .* http://localhost/mysite/$1 [R=301,L]
RewriteRule .* http://localhost/mysite/guest [R=301,L]

虽然我还没有测试过cookie部分 - 我确信那里会有更多问题!但其余的我测试过它的确有效! (它发送给客人,然后不进入infi-loop,是的!)

祝你有美好的一天! 8)