我有php / js软件(Piwik),它设置了一个cookie来跟踪对该网站的访问。
我们的网站(即非Piwik)已设置好,所有网址(资源除外)都会写回/public/index.php。
这样,我们的用户每个都会获得一个唯一的网址,例如;
...等
为了跟踪Piwik中的每个用户URL,我需要{cookie}将{}设置为Cookie中的路径到Apache映射到实际目录的路径。
由于我们没有为每个用户提供实际目录,因此我们无法做到这一点。
最后,我们继续在.htaccess中使用suggested告诉Apache我们认为用户的URL是它自己的目录。
然而,这不足,因为似乎没有办法在没有硬编码'base'的情况下使用RewriteBase。
我可以在我的.htaccess中做这样的事吗? RewriteBase说我不能这样做。
<击> 撞击>
RewriteCond ^([^/]*)(/.*)?
RewriteBase %1
击> <击> 撞击>
我还有哪些其他选择可以确保将Cookie的“路径”设置为用户的网址而不仅仅是“/”?
.htaccess in / contains;
RewriteRule ^(.*)$ /public/$1 [L]
然后/ public中的.htaccess包含;
RewriteRule ^index\.php5/(.*)$ - [L]
RewriteRule ^index\.php5?(.*)$ - [L]
RewriteRule ^index\.php5$ - [L]
RewriteRule ^(.*)$ /public/index.php5 [L]
请注意,对于已移动的路径等,这两个规则在开头都有其他规则
感谢您的帮助!
在JS Piwik对象上调用.setCookiePath(),如Francois Deschenes's answer中所述。例如,对于URL Piwik documentation,调用.setCookiePath('/ user1')并不会设置cookie的路径。
向URL添加尾部斜杠,然后调用.setCookiePath()。例如,URL http://www.example.com/user1然后调用.setCookiePath('/ user1')不会设置cookie的路径。
http://www.example.com/user1/ - 不幸的是,答案并不表示我是否可以使用当前路径作为基础。
答案 0 :(得分:6)
你不能用mod_rewrite
做到这一点。 Apache和mod_rewrite与cookie无关(至少就Piwik而言)。这不是与Apache相关的问题,而是Piwik如何设置cookie。如果您正在使用Piwik JavaScript跟踪器,请查看this specific section of the documentation,更具体地说,“如果您在不同的Piwik网站中跟踪一个域子目录或页面”部分。
您基本上想要使用setCookiePath
函数,无论您在何处设置JavaScript,都要使用PHP填写路径:
<强>使用Javascript:强>
tracker.setCookiePath('/user1');
在.htaccess
在您的其他规则之外添加此内容:
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://example.org/$1/ [L,R=301]