Since we are first and foremost a cPanel web hosting company, we will be exploring this from cPanel perspective.
The best and easiest way to get this done is to log in to your cPanel and scroll down to Domains >> Redirects.
The cPanel Redirects interface allows you to send all of the visitors to a domain or particular page to a different URL.
For example, if you create a page with a long URL, use the Redirects interface to add a redirect from a short URL to the long URL.
Visitors can enter the short URL to access the content of the long URL.
But here are other common 301 Redirect rules you can use in your .htaccess file
redirect a single page:
Redirect 301 /pagename.php http://www.domain.com/pagename.html
redirect an entire site or domain to a new one:
Redirect 301 / http://www.domain.com/
redirect an entire site to a subfolder:
Redirect 301 / http://www.domain.com/subfolder/
redirect a subfolder to a different website:
Redirect 301 /subfolder http://www.domain.com/
redirect a file extension but retain the page name:
Example: If you want a .html extension to use the same filename but use the .php extension.
RedirectMatch 301 (.*)\.html$ http://www.domain.com$1.php
use rewrite to redirect from old domain to new domain:
RewriteEngine on RewriteBase / RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
use rewrite to redirect from a non-www to www subdomain:
RewriteEngine on RewriteBase / rewritecond %{http_host} ^domain.com [nc] rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]
use rewrite to redirect a domain to www location with subdirectory:
RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} domain.com [NC] RewriteRule ^(.*)$ http://www.domain.com/directory/index.html [R=301,NC]
use rewrite to redirect from an old domain to a new domain that includes the full path and query string:
Options +FollowSymLinks RewriteEngine On RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC]
use rewrite to redirect from an old domain with a subdirectory to a new domain without the subdirectory, but include the full path and query string:
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI} ^/subdirname/(.*)$ RewriteRule ^(.*) http://www.katcode.com/%1 [R=302,NC]
rewrite and redirect URLs with query parameters with files placed in a root directory:
Example: The original URL being http://www.website.com/index.php?id=3 and the new URL being http://www.website.com/path-to-new-location/
RewriteEngine on RewriteCond %{QUERY_STRING} id=3 RewriteRule ^index\.php$ /path-to-new-location/? [L,R=301]
redirect URLs with query parameters and place files in a subdirectory:
Example: The original URL being http://www.website.com/sub-dir/index.php?id=3 and the new page being http://www.website.com/path-to-new-location/
RewriteEngine on RewriteCond %{QUERY_STRING} id=3 RewriteRule ^sub-dir/index\.php$ /path-to-new-location/? [L,R=301]
redirect a site to HTTPS from HTTP to eliminate duplicate content:
RewriteEngine on RewriteCond %{HTTPS} on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
redirect a site from HTTP to HTTPS to eliminate duplicate content:
RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
remove an index.html or index.php and redirect to the root:
RewriteEngine On RewriteCond %{THE_REQUEST} /index.php HTTP [NC] RewriteRule (.*)index.php$ /$1 [R=301,L]
RewriteEngine On RewriteCond %{THE_REQUEST} /index.html HTTP [NC] RewriteRule (.*)index.html$ /$1 [R=301,L]
rewrite and redirect URLs with query parameter to directory-based structure, retaining query string in URL root level:
Example: The original URL being http://www.website.com/index.php?id=100 and the new page being http://www.website.com/100/
RewriteEngine On RewriteRule ^([^/d]+)/?$ index.php?id=$1 [QSA]
rewrite URLs with a query parameter to a directory-based structure, retaining the query string parameter in URL subdirectory:
Example: The original URL is http://www.website.com/index.php?category=hats and the new page being http://www.website.com/category/hats/
RewriteEngine On RewriteRule ^/?category/([^/d]+)/?$ index.php?category=$1 [L,QSA]
redirect an old website to a new domain and retain the URL path:
RewriteEngine on RewriteCond %{HTTP_HOST} ^example-old\.com$ [NC] RewriteRule ^(.*)$ http://www.example-new.com/$1 [R=301,L]
If you do not want to give the path to the new domain, change the last line to:
RewriteRule ^(.*)$ http://www.example-new.com/ [R=301,L]
rewrite and add a trailing slash to URLs without one:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ http://www.example.com/$1/ [R=301,L]
redirect from a blog subdomain to a blog folder:
Example: Redirect blog.oldsite.com to www.newsite.com/blog/
Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_URI}/ blog RewriteRule ^(.*) http://www.somewhere.com/%{REQUEST_URI} [R=302,NC] RewriteRule ^(.*) http://www.somewhere.com/blog/%{REQUEST_URI} [R=302,NC]
You can see other examples at this location: https://gist.githubusercontent.com/ScottPhillips/1721489/raw/3c0257209608aac18071d0ebe1f2b0b4e6aec8ee/.htaccess