piwik 无法在 HTTPS 中工作

piwik not working in HTTPS

我在子域 analytics.mydomain.com/piwik [other VPS] 上安装了 piwik,并在我网站 HTML 的 head 标签中添加 javascript 代码 [ HTTPS].

我使用了 laravel 5.3 框架。

此代码:

<!-- Analytics Code -->
<script type="text/javascript">
    var _paq = _paq || [];
    // tracker methods like "setCustomDimension" should be called before "trackPageView"
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
    (function() {
        var u="//analytics.mydomain.com/piwik/";
        _paq.push(['setTrackerUrl', u+'piwik.php']);
        _paq.push(['setSiteId', '1']);
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
    })();
</script>
<!-- End Analytics Code -->

此代码在本地主机上有效,但在服务器上无效。

我的网站正在使用 HTTPS

如何发行?

我 运行 不久前遇到过类似的问题。像下面(第 8 行)那样强制 url 到 https 为我修复了它。我不能保证它对你有用,但值得一试。

<!-- Analytics Code -->
<script type="text/javascript">
    var _paq = _paq || [];
    // tracker methods like "setCustomDimension" should be called before "trackPageView"
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
    (function() {
        var u="https://analytics.mydomain.com/piwik/";
        _paq.push(['setTrackerUrl', u+'piwik.php']);
        _paq.push(['setSiteId', '1']);
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
    })();
</script>
<!-- End Analytics Code -->

建议您在 analytics.mydomain.com 上没有 SSL,这意味着您需要强制代码 使用 HTTPS:

<!-- Analytics Code -->
<script type="text/javascript">
    var _paq = _paq || [];
    // tracker methods like "setCustomDimension" should be called before "trackPageView"
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
    (function() {
        var u="http://analytics.mydomain.com/piwik/";
        _paq.push(['setTrackerUrl', u+'piwik.php']);
        _paq.push(['setSiteId', '1']);
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
    })();
</script>
<!-- End Analytics Code -->

当你使用 protocol-relative URLs 时(就像 // 没有 http:http:),它告诉浏览器使用与原始页面相同的协议调用 Piwik in. 如果你的Piwik服务器上没有SSL,它就不能接收HTTPS请求(即使是运行在443端口也会报证书错误)。

如果页面是 HTTPS,则所有资产 - 图片、CSS、JavaScript 等 - 在现代浏览器中也必须是 HTTPS。尝试包含 HTTP 资产将失败并出现 "mixed content" 错误。

您需要 analytics.mydomain.com 的 SSL 证书。