How to Detect Mobile Device and Redirect to Mobile site using Laravel and .htaccess

Language

Using Laravel .htaccess to Detect Mobile Devices and Redirect to Mobile Site

This post provides information on how to use Laravel .htaccess to detect mobile devices and redirect users to the mobile version of a website. It includes details on the implementation and offers a demo if necessary.

What is the .htaccess file?

The .htaccess file, which stands for hypertext access file, is a configuration file that operates at the directory level.

Its primary purpose is to configure site access issues such as access security control and URL redirection.

Uses of the .htaccess file

  • URL rewriting
  • Authentication based on the user's IP address
  • Controlling directory listing
  • Managing error responses
  • Allowing server-side caching to reduce bandwidth usage
  • An important advantage of the .htaccess file is that changes made to it take immediate effect because the file is read on each request.

Removing "public" from Laravel URLs using .htaccess involves creating an .htaccess file in the Laravel root directory and adding the following code:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Managing error responses can be done by using the .htaccess file to address the "404 not found" error:

RewriteEngine on
RewriteBase /RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Redirecting URLs using .htaccess allows you to redirect your website from xyz.com to www.xyz.com by using the following code:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Redirecting to a mobile site using .htaccess can be achieved through two options:

RewriteEngine On
RewriteCond %{QUERY_STRING} !^desktop
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot-mobile|iemobile|iphone|ipod|#opera mobile|palmos|webos" [NC]
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT}  "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant

|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]RewriteRule ^$ http://m.your_domain.com [L,R=302]

Using Laravel

Alternatively, you can use Laravel routes to redirect users to the mobile site. By creating a function to check if the request is coming from a mobile device, you can call the appropriate routes.

  1. <?php
  2. function isMobile(){
  3. if(isset($_SERVER['HTTP_USER_AGENT'])){
  4.  
  5. $useragent=$_SERVER['HTTP_USER_AGENT'];
  6.  
  7. if(preg_match('/(tablet|ipad|amazon|playbook)|(android(?!.*(mobi|opera
  8. mini)))/i',strtolower($useragent))){
  9. return true ;
  10. };
  11.  
  12.  
  13. if(preg_match('/(android|bbd+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge
  14. |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm(
  15. os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows
  16. ce|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a
  17. 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
  18. |s
  19. )|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
  20. 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(-|
  21. |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac(
  22. |-|/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt
  23. |kwc-|kyo(c|k)|le(no|xi)|lg(
  24. 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(-|
  25. |o|v)|zz)|mt(50|p1|v
  26. )|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
  27. )|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(-|
  28. )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i',substr($useragent,0,4))){
  29.  
  30. return true ;
  31. }
  32. }
  33. return 0;
  34. }
  35.  
  36. if(isMobile()){
  37. include_once(app_path().'/routes/mobile_routes.php');
  38. }else{
  39. require_once(app_path().'/routes/website_routes.php');
  40. }
  41. ?>

The .htaccess file can also be used to easily redirect a domain to a subdomain.

Using the PHP Laravel PHP Framework with .htaccess

We hope this code and post will help you implement Laravel .htaccess to detect mobile devices and redirect to the mobile site. If you need any assistance or have any feedback, please leave a comment. Your comments will help us improve and provide better assistance.

Visit us at:

Website: https://onlinecode.org
Github: https://github.com/onlinecode

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. After downloading it, you will need a program like Winzip to decompress it.

Virus note: All files are scanned once-a-day by SourceCodester.com for viruses, but new viruses come out every day, so no prevention program can catch 100% of them.

FOR YOUR OWN SAFETY, PLEASE:

1. Re-scan downloaded files using your personal virus checker before using it.
2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.

Add new comment