php - 根据设备在子域上自动重定向

标签 php codeigniter model-view-controller stack info

我想检查加载时间(我的网站在哪个设备上打开。)。现在我的要求

If User open site with PC that case Redirect on (www.website.com).
If User open site with Mobile that case Redirect on subdomain(www.m.website.com).

我该如何管理。最好的例子还有 facebook.com。

最佳答案

我不会写代码,只是解释你要做的事情。

index.php 的某处检查您是否在移动设备上。您可以使用 $_SERVER['HTTP_USER_AGENT'](您可以在互联网上找到不同的示例)或使用执行此操作的库来检查它是否是移动的。

如果您使用的是移动设备并且域不是 www.m.website.com,则重定向到该域。非移动设备也是如此。

要重定向,您可以使用 header('Location: http://www.m.website.com/');

更新 要从用户代理检测移动设备,您可以执行以下操作:

<?php

$useragent=$_SERVER['HTTP_USER_AGENT'];

if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))) {

      header('Location: http://www.m.website.com/');
}
?>

Simplest way to detect a mobile device

关于php - 根据设备在子域上自动重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36911798/

相关文章:

c# - 在 PayPal SandBox、MVC 中创建付款时出现 INTERNAL_SERVICE_ERROR

java - 多个 JButton 的 MVC 模式

php - 需要mysql查询表中一列下的多个标志

mysql - 如何检查 Codeigniter 中是否插入了值

php - 使用带流明的望远镜

api - 使用 LinkedIn API 如何在 xml 消息中发送 HTML

javascript - 从开始时间到结束时间在 php 中划分 20 分钟很多时间

用户注册时 Java UserList 未正确填充

php - 收到 PHP 警告 : Module '[module name]' already loaded in Unknown on line 0

php - 使用 PHP 从 MySQL 检索图像