我们制作了两个版本安装包,win-32.msi和win-64.msi,并将它们放在我们的网站供用户下载。
但我只想使用一个网络链接。当用户使用Windows-32位操作系统单击链接时,他将获得win-32.msi,使用Windows-64位操作系统将获得win-64.msi。
我们在Web代码中使用php,js,html,在apache中设置。
我们之前使用过一种方法:browsercap.ini。但是我们发现win10中的IE8-64位浏览器给了我们win8-32位信息,这是错误的。
那么还有其他解决方案吗?
在 Javascript 中,您可以使用 navigator 对象来获取有关本地系统的一些信息:
console.log(navigator.appVersion);
在我的系统上,这会产生:
5.0(麦金塔;Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
然后,您可以解析此内容以确定将用户发送到何处。
作为替代方案,您也可以通过使用mod_rewrite
并查看HTTP_USER_AGENT
变量来在Apache
中执行此操作。有关此内容的详细信息,请参阅mod_rewrite文档。
这样的事情可以工作:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (WOW64|OtherMatch)
RewriteRule ^(/path/to/dl-packages)/win-32.msi $1/win-64.msi [R,L]
这更多地是为了显示基本功能,您可能希望微调应与 64 位客户端匹配的(WOW64|OtherMatch)
字符串,不确定WOW64
是否匹配所有 Windows 64 位浏览器。此外,我将URL
与RewriteRule
中的win-32.msi
包相匹配,这将是默认包,如果 64 位客户端尝试获取它,它将被重定向到 64 位版本。根据您的站点,您可能希望以不同的方式处理此问题。