посоветуйте пожалуйста скрипт редиректа при посещении с мобильных устройств. проверял такой скрипт, редирект не происходит: http://habrasorium.ru/php/565-perenapravlyaim-mobilnye-ustrojstva-na-mobversiyu-sajta-php.html
PHP: <?php $agent = $_SERVER['HTTP_USER_AGENT']; if ( (stripos($agent, 'acs') !== false) || (stripos($agent, 'alav') !== false) || (stripos($agent, 'alca') !== false) || (stripos($agent, 'amoi') !== false) || (stripos($agent, 'audi') !== false) || (stripos($agent, 'aste') !== false) || (stripos($agent, 'avan') !== false) || (stripos($agent, 'benq') !== false) || (stripos($agent, 'bird') !== false) || (stripos($agent, 'blac') !== false) || (stripos($agent, 'blaz') !== false) || (stripos($agent, 'brew') !== false) || (stripos($agent, 'cell') !== false) || (stripos($agent, 'cldc') !== false) || (stripos($agent, 'cmd-') !== false) || (stripos($agent, 'dang') !== false) || (stripos($agent, 'doco') !== false) || (stripos($agent, 'eric') !== false) || (stripos($agent, 'hipt') !== false) || (stripos($agent, 'inno') !== false) || (stripos($agent, 'ipaq') !== false) || (stripos($agent, 'java') !== false) || (stripos($agent, 'jigs') !== false) || (stripos($agent, 'kddi') !== false) || (stripos($agent, 'keji') !== false) || (stripos($agent, 'leno') !== false) || (stripos($agent, 'lg-c') !== false) || (stripos($agent, 'lg-d') !== false) || (stripos($agent, 'lg-g') !== false) || (stripos($agent, 'lge-') !== false) || (stripos($agent, 'maui') !== false) || (stripos($agent, 'maxo') !== false) || (stripos($agent, 'midp') !== false) || (stripos($agent, 'mits') !== false) || (stripos($agent, 'mmef') !== false) || (stripos($agent, 'mobi') !== false) || (stripos($agent, 'mot-') !== false) || (stripos($agent, 'moto') !== false) || (stripos($agent, 'mwbp') !== false) || (stripos($agent, 'nec-') !== false) || (stripos($agent, 'newt') !== false) || (stripos($agent, 'noki') !== false) || (stripos($agent, 'opwv') !== false) || (stripos($agent, 'palm') !== false) || (stripos($agent, 'pana') !== false) || (stripos($agent, 'pant') !== false) || (stripos($agent, 'pdxg') !== false) || (stripos($agent, 'phil') !== false) || (stripos($agent, 'play') !== false) || (stripos($agent, 'pluc') !== false) || (stripos($agent, 'port') !== false) || (stripos($agent, 'prox') !== false) || (stripos($agent, 'qtek') !== false) || (stripos($agent, 'qwap') !== false) || (stripos($agent, 'sage') !== false) || (stripos($agent, 'sams') !== false) || (stripos($agent, 'sany') !== false) || (stripos($agent, 'sch-') !== false) || (stripos($agent, 'sec-') !== false) || (stripos($agent, 'send') !== false) || (stripos($agent, 'seri') !== false) || (stripos($agent, 'sgh-') !== false) || (stripos($agent, 'shar') !== false) || (stripos($agent, 'sie-') !== false) || (stripos($agent, 'siem') !== false) || (stripos($agent, 'smal') !== false) || (stripos($agent, 'smar') !== false) || (stripos($agent, 'sony') !== false) || (stripos($agent, 'sph-') !== false) || (stripos($agent, 'symb') !== false) || (stripos($agent, 't-mo') !== false) || (stripos($agent, 'teli') !== false) || (stripos($agent, 'tim-') !== false) || (stripos($agent, 'tosh') !== false) || (stripos($agent, 'tsm-') !== false) || (stripos($agent, 'upg1') !== false) || (stripos($agent, 'upsi') !== false) || (stripos($agent, 'vk-v') !== false) || (stripos($agent, 'voda') !== false) || (stripos($agent, 'w3cs') !== false) || (stripos($agent, 'wap-') !== false) || (stripos($agent, 'wapa') !== false) || (stripos($agent, 'wapi') !== false) || (stripos($agent, 'wapp') !== false) || (stripos($agent, 'wapr') !== false) || (stripos($agent, 'webc') !== false) || (stripos($agent, 'winw') !== false) || (stripos($agent, 'winw') !== false) || (stripos($agent, 'xda') !== false) || (stripos($agent, 'xda-') !== false) || (stripos($agent, 'up.browser') !== false) || (stripos($agent, 'up.link') !== false) || (stripos($agent, 'windows.ce') !== false) || (stripos($agent, 'iemobile') !== false) || (stripos($agent, 'mini') !== false) || (stripos($agent, 'mmp') !== false) || (stripos($agent, 'symbian') !== false) || (stripos($agent, 'midp') !== false) || (stripos($agent, 'wap') !== false) || (stripos($agent, 'phone') !== false) || (stripos($agent, 'pocket') !== false) || (stripos($agent, 'mobile') !== false) || (stripos($agent, 'pda') !== false) || (stripos($agent, 'PPC') !== false) || (stripos($agent, 'Series60') !== false) || (stripos($agent, 'Opera.Mini') !== false) ) { if ( (stripos($agent, 'windows.nt') === false) && (stripos($agent, 'bsd') === false) && (stripos($agent, 'x11') === false) && (stripos($agent, 'unix') === false) && (stripos($agent, 'macos') === false) && (stripos($agent, 'macintosh') === false) && (stripos($agent, 'playstation') === false) && (stripos($agent, 'google') === false) && (stripos($agent, 'yandex') === false) && (stripos($agent, 'bot') === false) && (stripos($agent, 'libwww') === false) && (stripos($agent, 'msn') === false) && (stripos($agent, 'america') === false) && (stripos($agent, 'avant') === false) && (stripos($agent, 'download') === false) && (stripos($agent, 'fdm') === false) && (stripos($agent, 'maui') === false) && (stripos($agent, 'webmoney') === false) && (stripos($agent, 'windows-media-player') === false) ) { header('Location: http://mob-site.com'); exit; } }
А не проще сделать конструкцию вида: $mobile_agents = array('aaa', 'bbb', 'ccc' ..., 'zzz'); $is_mobile = false; foreach ($mobile_agents as $agent) { if (strstr($_SERVER['HTTP_USER_AGENT'], $agent)) { $is_mobile = true; break; } }
а не проще ли использовать in_array() ? PHP: $mobile_browser = array('br1','br2'....); if(in_array($agent,$mobile_browser)) { // Catched }
Code: (function(a,b){if(/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/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|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|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|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))window.location=b})(navigator.userAgent||navigator.vendor||window.opera,'http://site.com'); Собственно простой js для сего дела.
Serafim хорошо, но вдруг отключен, и помоему не все мобилки его поддерживают. Skofield тру код. PHP: <?php $arr = array( 'acs', 'alav', 'alca', 'amoi', 'audi', 'aste', 'avan', 'benq', 'bird', 'blac', 'blaz', 'brew', 'cell', 'cldc', 'cmd-', 'dang', 'doco', 'eric', 'hipt', 'inno', 'ipaq', 'java', 'jigs', 'kddi', 'keji', 'leno', 'lg-c', 'lg-d', 'lg-g', 'lge-', 'maui', 'maxo', 'midp', 'mits', 'mmef', 'mobi', 'mot-', 'moto', 'mwbp', 'nec-', 'newt', 'noki', 'opwv', 'palm', 'pana', 'pant', 'pdxg', 'phil', 'play', 'pluc', 'port', 'prox', 'qtek', 'qwap', 'sage', 'sams', 'sany', 'sch-', 'sec-', 'send', 'seri', 'sgh-', 'shar', 'sie-', 'siem', 'smal', 'smar', 'sony', 'sph-', 'symb', 't-mo', 'teli', 'tim-', 'tosh', 'tsm-', 'upg1', 'upsi', 'vk-v', 'voda', 'w3cs', 'wap-', 'wapa', 'wapi', 'wapp', 'wapr', 'webc', 'winw', 'winw', 'xda', 'xda-', 'up.browser', 'up.link', 'windows.ce', 'iemobile', 'mini', 'mmp', 'symbian', 'midp', 'wap', 'phone', 'pocket', 'mobile', 'pda', 'PPC', 'Series60', 'Opera.Mini', 'windows.nt', 'bsd', 'x11', 'unix', 'macos', 'macintosh', 'playstation', 'google', 'yandex', 'bot', 'libwww', 'msn', 'america', 'avant', 'download', 'fdm', 'maui', 'webmoney'); if(isset($_SERVER["HTTP_USER_AGENT"]) && !empty($_SERVER["HTTP_USER_AGENT"])) { if(preg_match('#'.implode('|',$arr).'#i', $_SERVER["HTTP_USER_AGENT"])) { @header('http://ya.ru'); exit; } } ?>
PHP: if(preg_match('/android.+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$_SERVER['HTTP_USER_AGENT'])||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|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|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|xda(\-|2|g)|yas\-|your|zeto|zte\-/i',substr($_SERVER['HTTP_USER_AGENT'],0,4))){ if($_SERVER['SERVER_NAME'] == 'mail.ru'){ header('Location: http://m.mail.ru'); die(); } }