我在谷歌失败了,我在这里找不到答案。对不起,我是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 = ...然后我得到内部服务器错误。
请帮忙!!!谢谢你!!!
答案 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)