如果一个人在手机上,如何使用php或JavaScript将其重定向到我的移动站点?

如果一个人在手机上,如何使用php或JavaScript将其重定向到我的移动站点?,php,javascript,html,mobile,Php,Javascript,Html,Mobile,我有一个移动站点,但如果用户在移动设备上,我需要一个脚本将其重定向到该站点 有几种方法可以做到这一点,但检测屏幕大小是一种很好的方法。请注意,屏幕宽度与浏览器窗口大小无关 <script type="text/javascript"> <!-- if (screen.width <= 699) { document.location = "mobile.html"; } //--> </script> 您还可以通过以下方式匹配特定设备,如iPh

我有一个移动站点,但如果用户在移动设备上,我需要一个脚本将其重定向到该站点

有几种方法可以做到这一点,但检测屏幕大小是一种很好的方法。请注意,屏幕宽度与浏览器窗口大小无关

<script type="text/javascript">
<!--
if (screen.width <= 699) {
  document.location = "mobile.html";
}
//-->
</script>

您还可以通过以下方式匹配特定设备,如iPhone或iPod


重要注意事项

虽然这是可行的,但当你试图访问某个特定页面时,被重定向到移动站点的首页也是非常烦人的。例如,当你通过Facebook上的链接试图访问一篇文章时,如果该网站将你重定向到该网站移动版的首页,这是令人愤怒的,也是毫无帮助的!很有可能,他们永远不会努力找到内容

paulsm4是正确的,使用CSS在同一URL上为您的站点提供移动布局,而不是重定向是一个更理想的解决方案。但是,如果这不是一个选项,那么下一个最好的方法是重定向到该站点的移动版本的匹配URL

例如,如果您的移动站点只有不同的子域,则可以使用Javascript重定向到移动版本的正确页面:

<script type="text/javascript">
<!--
// Full URL:   http://example.com/articles/1
// Mobile URL: http://mobile.example.com/articles/1
if (screen.width <= 699) {
  // Redirect to the same page on the mobile site
  document.location.host = "mobile." + document.location.host;
}
//-->
</script>

您必须首先检测浏览器。这是一个包含有关使用javascript进行浏览器检测的信息的页面: 如果检测到的浏览器是移动浏览器之一,则将其重定向到其他页面。 这是一个关于这个主题的非常有用的页面:
还包含用于浏览器检测的php代码

您的第一道防线应该是使用CSS:

简而言之,这里有一些Javascript可以为您执行重定向:

  • 
    


您不必使用JS来执行此操作-浏览器实际上会在HTTP头中将任何内容发送回浏览器之前将代理字符串发送到PHP。看看
$\u SERVER['HTTP\u USER\u AGENT']
,你就会明白我的意思了


CodeIgniter有一个可以帮助解决这种行为的方法。它的源是,它与浏览器代理字符串一起使用的资源文件是。

您没有。你的网站就是你的移动网站,你不需要JS来做这件事——看看我的答案,看看PHP解决方案的例子。这与您的想法不同,但更快更干净,也不依赖于JS等。CSS解决方案是有效的,但很难在现有网站上反向实现。@raynos,在某种程度上,但这取决于网站的目标。单独的移动网站设计不好。旁白:这些答案上未注释的向下投票喷雾是怎么回事?@danp
document.location=uri
的哪一部分不是重定向?你的用户访问了你的网站。当您可以执行http用户代理过滤时,他们不希望加载完整的桌面站点,然后跳转到移动站点(包括最坏情况下的所有相关资源加载)。。服务器端,效率很低。重定向到移动设备的主要原因是移动用户界面。第二个原因是加载速度可能没有可靠的方法在userAgent和“用户想要一个移动友好的界面”之间进行映射,但这是最好的方法。只要用户可以选择随时返回桌面站点(如果他们愿意的话),我同意这一点,这就是我解决问题的方法。响应式/移动优先web设计更优雅地处理整个问题。服务器端过滤(如果你真的必须使用UA嗅探)是最不引人注目的方式,加上当UA嗅探出错时返回完整站点的链接。应向用户提供适合其设备的界面。如果你能考虑到各种各样的问题和不兼容性(其中有很多),那么媒体查询是很好的,但是在现有的代码库上这样做通常是不切实际的。这是一个很好的观点。从成本效益的角度来看,从头开始构建一个移动版本,然后重构现有的网站以提高响应速度要容易得多。我认为屏幕宽度不是一个明智的解决方案。UA嗅探并不是完美的,但如果你绝对必须进行这种过滤,强迫用户加载带有JS重定向的移动站点,因为他们的窗口是任意大小的,这并不会减少它。如果用户减少了加载站点的窗口,然后将其最大化,会发生什么?是否要检测调整大小事件并强制重新加载..?我前面说过,但我要重申-“注意屏幕宽度与浏览器窗口大小无关。”您可以通过使浏览器窗口变小并在javascript控制台中调用screen.width来测试它。您仍将看到实际屏幕(分辨率)宽度。
<script type="text/javascript">
<!--
// Full URL:   http://example.com/articles/1
// Mobile URL: http://mobile.example.com/articles/1
if (screen.width <= 699) {
  // Redirect to the same page on the mobile site
  document.location.host = "mobile." + document.location.host;
}
//-->
</script>