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