htaccess detect and redirect Mobile users

htaccess detect and redirect Mobile users.

This article explains how to detect  mobile users on website and redirect them to a mobile website using .htaccess.

There are many mobile devices available in the market, So if you want detect particular mobile users on your website and redirect them to a specific page or mobile website we need to alter/add the .htaccess file in your website root.

For example if you want to detect iPhone users and redirect them to specific domain through .htaccess file. Add the below code in the .htaccess file located in the root folder :

For iPhone :

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} iPhone
RewriteRule .* http://iphone-mobile-website.com/ [R]

 

The below code will work for all the mobiles:

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} android.+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|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ (ce|phone)|xda|xiino [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(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\-) [NC]
RewriteRule ^$ http://your-mobile-website.com/ [R,L]

You can read more about .htaccess by clicking here

htaccess custom redirection of error pages

htaccess custom redirection of error pages.

Making the custom error pages makes the site seems much professional.

In order to show customized error pages we need to add the error number and related error pages in .htaccess file.

You can use custom error pages for any error as long as you know its number (like 404 for page not found) by adding the following to your .htaccess file:

The format of added error pages to the error number is below :
ErrorDocument errornumber /file.html

For example if the error code is 401 which is page not found error add the below line in the .htaccess page to show the custom error page (notfound.html). Add the file notfound.html in the root directory of the site.

ErrorDocument 404 /notfound.html

If the error page is not in the root directory of your site, you can enter the path to the file:

ErrorDocument 404 /path_to_custom_error_page.html
like
ErrorDocument 404 /errorpages/notfound.html

These are some of the most common errors:
401 – Authorization Required
400 – Bad request
403 – Forbidden
500 – Internal Server Error
404 – Wrong page

Some examples for other errors

ErrorDocument 401/authorization-error-page

ErrorDocument 402/bad-request-error-page

ErrorDocument 403/forbidden-error-page

ErrorDocument 500/internal-server-error-page

 

You can read more about .htaccess by clicking here

htaccess 302 Redirect all the request to a domain to html file

Redirecting all the requests coming to the domain to the index.html file or some html file using htaccess file.
This redirection is used when the domain is offline and want to show some html page which contains the message to the users who visits the site.

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$ # if not index.html file
RewriteRule .* /index.html [L,R=302] # redirects/rewrite to some html file ( index.html)

To exclude specific folder

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/images/ # folder to be excluded
RewriteCond %{REQUEST_URI} !^/index.html$ # if not index.html file
RewriteRule .* /index.html [L,R=302] # redirects/rewrite to some html file ( index.html)

htaccess add a trailing slash to urls

Adding a trailing slash

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f #makes sure that files will not get a slash added.
RewriteCond %{REQUEST_URI} !(.*)/$ #url does not contain a trailing slash
RewriteRule ^(.*)$ http://www.domain.com/$1/ [L,R=301] # executes the rewrite rule

In case if some of the urs does not need a trailing slash added

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f #makes sure that files will not get a slash added.
RewriteCond %{REQUEST_URI} !example #makes sure that existing folder (example) will not get a slash added
RewriteCond %{REQUEST_URI} !(.*)/$ #url does not contain a trailing slash
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301] # executes the rewrite rule

htaccess Redirect all http requests to new domain

Redirect from olddomain.com to newdomain.com:

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

This is useful when using www.newdomain.com as your new domain name
Redirect from olddomain.com to www.newdomain.com:

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

htaccess Redirect index.php to Domain root

htaccess Redirect www.domain.com/index.php to www.domain.com

RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://www.doamin.com/$1 [R=301,L]

Redirect www.domain.com to www.domain.com/index.php

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^$ http://www.domain.com/index.php [L,R=301]

For subdomain use the below code :
RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L]

htaccess file

Content about .htaccess file comes here.

The apropiate rule to redirect domain.com/index.php?page=about to domain.com/about is the following
RewriteEngine on
RewriteRule ^index\.php$ %{QUERY_STRING} [C]
RewriteRule page=(.*) /$1? [R=301,L]

or

rule to redirect domain.com/index.php?page=about to domain.com/page/about is the following
RewriteEngine on
RewriteRule ^page/([[a-zA-Z_-]+)/?$ page/index.php?page=$1 [NC,L] # Handle product requests