背景
我有 php/js 软件 ( Piwik ),它设置了一个 cookie 来跟踪对网站的访问。
我们的站点(即;不是 Piwik)设置为所有 URL(资源除外)都写回/public/index.php。
这样,我们的每个用户都会获得一个唯一的 URL,例如;
...等等
我在 Piwik 中跟踪每个用户 URL,它是 suggested我需要将 cookie 中的路径设置为 Apache 映射到实际目录的路径。
因为我们没有每个用户的实际目录,所以我们不能这样做。
最后,我们继续使用 RewriteBase在 .htaccess 中告诉 Apache 我们认为用户的 URL 是它自己的目录。
然而,这还不够,因为似乎没有一种方法可以在不对“base”进行硬编码的情况下使用 RewriteBase。
问题
我可以在我的 .htaccess 中做这样的事情吗? Francois Deschenes's answer说我不能这样做。
<罢工>罢工>
RewriteCond ^([^/]*)(/.*)?
RewriteBase %1
罢工><罢工>罢工>
我还有哪些其他方法可以确保将 cookie 的“路径”设置为用户的 URL 而不仅仅是“/”?
我目前拥有的
/中的.htaccess;
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(),如 Piwik documentation 中的建议.例如,对于 URL http://www.example.com/user1 , 调用 .setCookiePath('/user1') 实际上并没有设置 cookie 的路径。
向 URL 添加尾部斜杠,然后调用 .setCookiePath()。例如,网址 http://www.example.com/user1/然后调用 .setCookiePath('/user1') 不会设置 cookie 的路径。
相关问题
With mod_rewrite can I specify a RewriteBase within a RewriteCond? - 不幸的是,答案并未表明我是否可以使用当前路径作为基础。
最佳答案
你不能用 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]
关于php - 伪造 cookie 的 'path' - 通过 .htaccess/javascript/或其他方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500902/