2017-05-08 55 views
1

我在子域analytics.mydomain.com/piwik [other VPS]上安裝piwik,並在我的網站[HTTPS]的HTML中添加了代碼爲head的JavaScript代碼。piwik在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合作。

如何發佈?

+0

它不起作用的症狀是什麼?例如:你是否收到錯誤?它根本不打電話嗎?訪問沒有在Piwik中顯示?相關問題:你在Piwik服務器上有HTTPS嗎? –

回答

2

如果頁面是HTTPS,則所有資源 - 圖像,CSS,JavaScript等 - 在現代瀏覽器中也必須是HTTPS。試圖包含HTTP資產將失敗,出現「混合內容」錯誤。

您將需要一個analytics.mydomain.com的SSL證書。

1

我碰到類似的問題。強制URL如下所示(在第8行)爲我修復了它。我不能保證它會爲你工作,但它是值得一試。

<!-- 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 --> 
+0

嗨,請勿在analytics.mydomain.com中安裝SSL,並且不要使用HTTPS。 – mySun

+0

@mySun好的,你需要SSL。您無法在HTTPS頁面上使用HTTP資產。 – ceejayoz

1

Your comment表明你沒有SSL上analytics.mydomain.com,這意味着你需要將代碼強制使用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。如果Piwik服務器上沒有SSL,它將無法接收到HTTPS請求(如果它是偶數,它將會發出證書錯誤runni在端口443上)。

+0

如果此代碼所在的頁面是HTTPS,則HTTP請求將被阻止。 – ceejayoz

+0

你是完全正確的。我的錯。 –