伪造一个cookie的'路径' - 通过.htaccess / javascript /或其他?

时间:2011-06-28 02:22:06

标签: php javascript .htaccess matomo mod-rewrite

背景

我有php / js软件(Piwik),它设置了一个cookie来跟踪对该网站的访问。

我们的网站(即非Piwik)已设置好,所有网址(资源除外)都会写回/public/index.php。

这样,我们的用户每个都会获得一个唯一的网址,例如;

http://www.example.com/user1

http://www.example.com/user2

...等

为了跟踪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/ - 不幸的是,答案并不表示我是否可以使用当前路径作为基础。

1 个答案:

答案 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]