我在网上对这个问题的答案进行了大量研究之后,将这个问题发布到了Stackflow b / c,我没有遇到过直接的答案,不得不做我自己的讨论来解决这个问题。 / p>
基本上,Sitecore对上传到媒体库的所有文件使用处理程序文件.ASHX。由于我使用的第三方GA跟踪工具(entourage.js或gatags.js)无法将.ashx识别为白名单下载文件,因此未向GA像素跟踪器(__ utm.gif)添加适当的GA跟踪语法。
所以解决方案结果很简单,但遗憾的是,没有追溯性,这意味着以前上传到Sitecore内容树中的媒体库的所有文件将继续使用ashx扩展名,除非您重新上传图像。在您的web.config文件中,搜索" Media.RequestExtension"设置。如果您从" ashx"更改与此设置关联的值如果是空白字符串,则会强制Sitecore使用Sitecore媒体库中文件和图像的原始大小。
除了干扰GA分析之外,这种将每个可下载文件扩展名转换为ashx文件的方法都是糟糕的SEO实践。并且,Sitecore不会指出你在绕过这个方向的正确方向(谷歌Sitecore动态链接和配置),因为他们希望你使用他们的Sitecore OMS下载跟踪功能。就是这样!两天的研究使我得出了这个结论。
答案 0 :(得分:1)
您可以使用此脚本通过Google Analytics跟踪下载事件。
if (typeof jQuery != 'undefined') {
jQuery(document).ready(function($) {
var filetypes = /\.(zip|pdf|doc*|xls*|ppt*|jpg|ashx)$/i;
var baseHref = '';
if (jQuery('base').attr('href') != undefined) baseHref = jQuery('base').attr('href');
jQuery('a').each(function() {
var href = jQuery(this).attr('href');
if (href) {
if (href.indexOf('?') != '-1') {
href = href.substring(0, href.indexOf('?'));
}
if (href.match(filetypes)) {
jQuery(this).click(function() {
var extension = String((/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined);
var filePath = String(href);
_gaq.push(['_trackEvent', 'Download', extension, filePath]);
if (jQuery(this).attr('target') != undefined && jQuery(this).attr('target').toLowerCase() != '_blank') {
setTimeout(function() {
location.href = baseHref + href;
}, 200);
return false;
}
});
}
}
});
});
}
只需在此行添加所需的文件类型 -
var filetypes = /。(zip | pdf | doc * | xls * | ppt * | jpg | ashx)$ / i;
答案 1 :(得分:0)
为gatags.js
做了一个快速谷歌,我可以看到你可以在第24行添加白名单的扩展名:
var isDoc = path.match(/\.(?:doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&|\?)/);
将其更改为:
var isDoc = path.match(/\.(?:ashx|doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&|\?)/);
或者,您可以使用dom选择器和点击事件自行附加Google Analytics _trackEvent
。
无论哪种方式,我认为OMS可以跟踪媒体库文件而不管扩展名 - 删除默认的ashx
扩展名并不会阻止Sitecore处理文件。
答案 2 :(得分:0)
所以解决方案结果很简单,但遗憾的是,不追溯, 表示之前上传到媒体库的所有文件 Sitecore内容树将继续使用ashx扩展名,除非 你重新上传图片。
不确定您获取此信息的位置,但这是不正确的。您可以删除Media.RequestExtension
设置,所有现有文件都将使用其原始扩展名。在IIS7集成模式下,您应该能够进行此更改,而无需进行其他服务器配置更改。
修改:更多信息
如果您在反编译器中分析Sitecore.Configuration.Settings.Media.RequestExtension
(与此设置相当的API),您可以看到它仅在MediaProvider
构建媒体网址时使用。 Sitecore应该记住媒体的原始扩展名,并且可以使用其原始网址进行投放,无论此设置在上传时是什么。无论如何,这是我的经验,似乎通过查看Sitecore.Kernel来验证。