【发布时间】:2009-03-04 06:21:58
【问题描述】:
我有一个网页,最近有人要求我为其创建移动版本,现在我已经完成了,我被要求进行自动重定向,以便如果用户通过 PDA/iPhone/ 进入网页智能手机/等他/她会自动定向到 m.website.com,但我不知道该怎么做 =/ 我尝试了一些我使用 google 找到的 php 和 javascript,但到目前为止没有任何帮助。你们可以吗?
【问题讨论】:
我有一个网页,最近有人要求我为其创建移动版本,现在我已经完成了,我被要求进行自动重定向,以便如果用户通过 PDA/iPhone/ 进入网页智能手机/等他/她会自动定向到 m.website.com,但我不知道该怎么做 =/ 我尝试了一些我使用 google 找到的 php 和 javascript,但到目前为止没有任何帮助。你们可以吗?
【问题讨论】:
查看 WURFL 并为与其移动浏览器用户代理字符串列表匹配的用户代理构建 302 重定向器。
或者,只需在 User-Agent 中查找 iPhone 并将其重定向到您的 iPhone 站点。其他浏览器的市场份额如此之小,几乎不值得瞄准它们。 iPhone 占移动网络 HTML 流量的 67%。您可以在您的网页上使用 Javascript 来执行此操作。
【讨论】:
我已经发布了“Apache Mobile Filter”的最后一个版本,这个开源项目在前 8 个月内,从 sourceforge 下载了超过 1100 次,我想从 CPAN 下载也是如此。
Apache 移动过滤器允许您从任何编程语言访问 WURFL,而不仅仅是传统上用于动态移动网站的 Java 和 php。
模块检测移动设备并将 WURFL 功能作为环境变量传递给其他 Web 应用程序。它还可用于动态调整图像大小以适应移动设备的屏幕尺寸。 试试看,让我知道你的意见。
欲了解更多信息:http://www.idelfuschini.it/it/apache-mobile-filter-v2x.html
【讨论】:
我写了一个名为“redirection_mobile.js”的JS脚本来解决这个问题。如果您从移动设备访问站点,它会检测用户代理并重定向到移动版本。
在某些情况下,您希望从移动设备重定向到桌面版本(例如使用“转到主站点”链接),脚本会处理该问题,一旦您完成会话,您就可以访问又是手机版。
您可以在 github 上找到源代码 https://github.com/sebarmeli/JS-Redirection-Mobile-Site,您可以在我的一篇文章中阅读更多详细信息:
【讨论】:
也许如果你列出你的代码不起作用,可以提供更多帮助。
如果您有 php,则用户代理检测在大多数情况下都能正常工作。
< ?php
$browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
if ($browser == true) { header(”Location: http://www.example.com/“); }
}
?>
此外,这看起来像是一个骗局: Identifying different mobile handsets and redirecting to different websites
【讨论】:
这里提出并回答了一个非常相似的问题:
How do I determine whether it's a mobile device with PHP?
传统的移动设备 通过比较 HTTP 检测 针对列表的 User-Agent 标头 众所周知的移动 UA 字符串。一本小说 方法而是尝试检测 桌面操作系统的存在 - 任何东西 发现不是桌面操作系统 然后必须是移动的。
这导致更少的错误 积极的。
我写了一篇带有示例代码的帖子 在 Python 中:
检测设备是否为桌面设备 - 如果不是,则重定向到您的移动站点!
干杯,
约翰
【讨论】:
一旦您设置了移动子域,请务必参考 A List Apart 中的这篇文章,该文章描述了移动设备对 CSS 属性 media="handheld" 的反应。不幸的是,并非所有人的反应都一样。
http://www.alistapart.com/articles/returnofthemobilestylesheet
【讨论】:
“Apache Mobile Filter”是“Apache Module Registry”门户(http://modules.apache.org/search.php?id=1787)的模块之一
【讨论】:
我使用http://detectmobilebrowser.com,发现这是最快最简单的方法。它工作得很好。该站点自动生成服务器脚本(php、perl、python、coldfusion、apache、jquery 等),检测移动浏览器并相应地重定向。您可以将代码复制并粘贴到您的索引文件中的某处。
【讨论】:
这段 Javascript 代码也可能会有所帮助:
<script>
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|BB10|IEMobile|Opera Mini/i.test(navigator.userAgent) ) //Specify the mobile devices that you would like this if statement to apply to.
{
image_y = document.getElementById('bodyID'); //Get the ID of the body and assign it to a variable.
image_y.parentNode.removeChild(image_y); //Remove the body to prevent anything loading on the screen in case there are issues with the window location redirect.
window.location = "mobile.html"; //Re-assign the window location to a new html page that is caters for the redirect.
}
</script>
我把它放在 HTML 正文的开头。
【讨论】: