301 Redirect: Definition, Types, Methods and How to Setup It Up for Any Website

Many times, we face an error in our Google Search Console that is “page not found”. This happens for some reasons if you delete any page or content or if you edit your post title and URL. This page not found error might harm in your Google ranking. However, the good news is you can fix this problem using a 301 redirect.

In this tutorial, we will learn “How to create a 301 redirect properly”. Where and when we should use a 301 redirect on our website.

So, let’s get started

What is a 301 redirect?

It is a way to redirect site users and search engines to a different URL than the one they originally requested. Below are descriptions of some of the most commonly used types of redirection. Also, you can find the whole list of HTTP status codes, their meaning and further information in our blog.

A 301 redirect is a permanent redirect process from one site to another or one page to another page. This is an implementation of code to send your users from one URL to another automatically.

This 301 redirect helps to reduce errors and give the required information to the users. Now the question is when should we use a 301 redirect?

When should we use a 301 redirect?

We already know a 301 redirect is a permanent redirect. There are many situations where we use a 301 redirect. I am showing you some of them, which are really important to know.

  1. If you want to change your domain name for some reason, you must use a 301 redirect. Otherwise, you will lose your users of the old domain name. This will redirect your old users to your new domain name.
  2. You can redirect your traffic from an outdated page to the desired page. In this way, you will not lose all those potential traffic as well as it will increase your website or brand name value.
  3. You can redirect from http:// to https:// or in www. Version of your domain using a 301 redirect very easily.
  4. To redirect traffic to the website from other URLs owned by the same person or organization.

Some uses of a 301 redirect

Now we learn how we can use a 301 redirect for some use case. For that, you have to write some code. However, don’t worry a backup for you. I will provide you all the necessary codes.

First, log in to your cpanel by typing your domain name with /cpanel at the end. For example https://domainname.com/cpanel

Because you are going to use .htaccess to create a 301 redirect. Find your “File Manager” option and go inside.

Now click on the “public_html” folder. If your website is installed in the root folder then you will find all the files inside this public_html folder. Otherwise, go to the specific folder inside public_html where your website is installed.

Now find out “.htaccess” file in this folder. If you don’t find it that’s ok. Click on “Settings” at the top right corner.

This will open up a new popup. Here you have to select “Show Hidden Files(dotfiles)” and click on save.

Now probably you will find a .htaccess file if you have one. If it does not show up then create the .htaccess file by clicking “File” option at the top left corner.

Right click on your .htaccess file then click “Edit”. This will open up a new popup. In this popup, you have to click “Edit” again. Now you will get your .htaccess file opened on a new tab.

You have to write some code inside this file to create a 301 redirect. It depends according to your need. I am going to show you 5 most important uses of a 301 redirect with their codes.

  • Redirect individual files on the same domain
  • Redirect an old domain to a new domain
  • Force www. version of the domain to be used
  • Force non www. version of the domain to be used
  • Redirect all files with a certain extension

# Redirect individual files/pages

To redirect individual files and pages, you can use a 301 redirect. Like, if I want to redirect https://techofworld.com/oldpage.html to https://techofworld.com/newpage.html, I can do this by using the following code inside .htaccess file.


Redirect 301 /oldpage.html https://techofworld.com/newpage.html


Here, I will give the ending part first (/oldpage.html). Then I have to give the URL of the new page. You have to use our page URL here.

Now click on “Save changes” button at the top left corner to save your .htaccess file.

You can type your old page URL in your browser to see the change. I believe this will redirect you to the new page.


# Redirect from old domain to a new domain

If you have an old domain name like olddomain.com and you want to redirect this to a new domain newdoamin.com, you can easily do this using a 301 redirect.

Use the given code. Copy and paste it inside your .htaccess file.


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


Here, you just need to replace olddomain.com and newdomain.com with your domain names. In addition, don’t forget to save your .htaccess file after doing all these changes.


# Force www. version of the domain

If your domain name does not contain www at the beginning like example.com, but you want to use www like www.example.com

You can do this by a 301 redirect. Copy and paste the following code inside your .htaccess file.


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


Just change example.com to your domain name. This will add www at the beginning to your domain name. Save your .htaccess file and see the change.


# Force non www. version of the domain

As we have seen earlier that we can use www at the beginning of our domain if we don’t have it. We can also use non www version if we have it in our domain.

To remove www from your domain you have to use the following code in your .htaccess file.


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


Use your domain name instead of example.com. This will work fine. Save .htaccess file and see the change.


# Redirect all files with a certain extension

You can also change the file type using a 301 redirect. For example, if you have files with .html extension at the end you can easily change to the .php extension.

Use the given code below if you need to change the file type. Copy and paste it into your .htaccess file.


RewriteEngine On
RewriteCond %{REQUEST_URI} .html$
RewriteRule ^(.*).html$ /$1.php [R=301,L]

We are changing .html to .php file. You can also do the reverse. Just use .php instead of .html and .html instead of .php

301 Moved Permanently

301 redirect is a permanent redirect, which transfers about 90-99% of link juice. This redirect indicates that the page has been moved to a new address and the old URL should be considered out-of-date.

302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)

302 redirect – temporary redirect. This redirect transmits 0% of link juice and, in most cases, should not be used. At the moment, the Internet works under the HTTP protocol, which determines how to manage URLs. In two versions of this protocol, this server reply has a different response status:

  • HTTP 1.0: 302 server response is “Moved Temporarily” – the current document is temporarily moved to a different URL.
  • HTTP 1.1: there was a change in the server’s response to “Found” – the current document was found.

307 Moved Temporarily (HTTP 1.1 Only)

307 redirect in the HTTP 1.1 protocol became the receiver of the 302 redirect. While the main search bots will consider it as an analog-302, for almost all cases, it’s best to use 301. The exception to this rule is when the content moved only temporarily (for example, during tech maintenance) and the search engines already understand, that your server is compatible with HTTP 1.1. However, since it is hard to determine whether the search engines really understood that your server is compatible with this new protocol, it is better to use a 302 redirect for content that was temporarily moved.

Other types of redirects

There are also other kinds of redirects: using Meta Refresh or JavaScript – which are executed at the page level, and not at the server level. Here’s what a typical Meta Refresh redirect looks like:

However, these redirects are desirable to use extremely rare, because they can be used by spammers and doorways. Also, when using these redirects, the link juice is almost not transmitted.

Examples of using are below.

Canonization of a site’s domain or how to stick a domain together?

To glue a domain from www to without www:

RewriteCond %{HTTP_HOST} ^www.site.com$ [NC]
RewriteRule ^(.*)$ Http://site.com/$1 [R=301,L]

For gluing together with without www on www:

RewriteCond %{HTTP_HOST} ^site.com$ [NC]
RewriteRule ^(.*)$ Http://www.site.com/$1 [R=301,L]

In order to correctly choose on which option to paste, it is advisable to take into account:

  • what options are more in the top
  • what options lead to more pages in the index

Slash canonicalization at the end of the URL

When designing a site it is important to decide on the format using the slash at the end of the URL, since for search engines there are 2 variants of URL example:

  • http://www.site.com/cat1/
  • http://www.site.com/cat1

are different. Therefore, after you have decided on the site, then you need to prescribe the following redirects

To remove a slash at the end:

RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $ 1 [L,R =301]

To add a slash to the end of the address bar:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]

Redirection of one page to another page:

Redirect 301 /oldpage.html http://www.site.com/newpage.html

Redirect for the duplicates of the main page

This code ensures that any home page address that includes multiple versions of direct links to the page name, for example, default.htm or index.html, will be redirected to the canonical homepage, http://www.site.com:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /([^/]+/)*(default|index|main).(html|php|htm) HTTP/ [NC]
RewriteRule ^(([^/]+/)*)(default|main|index).(html|php|htm)$ http://www.site.com/$1 [L,R=301]

Redirect directory

If the catalog displayed in the URL structure, then if you do the redirection, you will also have to change the URL accordingly. In this case, you need to write the following redirect:

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2 [R=301,L]

But, if the URL of the old catalog starts immediately after the domain: www.site.com/old-catalog/, then you need to use the following code

RewriteRule old-catalog /(.*) / old-catalog /$1 [R=301,L]

Redirect when changing file extensions

If you suddenly moved to another platform or CMS and at the same time the URLs extension changed only, then, in this case, you need to use such redirect.

RedirectMatch 301 (.*).php$ http://www.site.com$1.html

Usage examples to protect the site from multiple page duplicates

Redirect from different domains and subdomains

If you bought several domains in different domain zones or developed a new site and attach it on a subdomain, and forgot to close this subdomain from indexing, you must redirect to the primary domain:

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

Thus, all domains such as www.site.ru, www.site.net, test.site.com will be redirected to www.site.com.

How to remove multiple slashes / dashes in a URL

Sometimes “by chance” the URL may include several slashes, for example, www.site.com/catalog////page-1.html. Here it is necessary to do 301 redirect per page with one slasher www.site.com/catalog/page-1.html:

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]

Likewise, you can put together several dashes into one in the URL: from www.site.com/catalog/page-1.html at www.site.com/catalog/page-1.html:

RewriteCond %{REQUEST_URI} ^(.*)--(.*)$
RewriteRule . %1-%2 [R=301,L]

How to make a redirect from any URL to URL but only in lowercase?

Since, lowercase is taken into account by search engines, when designing a site it is desirable to add all URLs in lowercase. However, if you initially missed this point, it’s best to use the following redirect code at the php script level:

header("HTTP/1.1 301 Moved Permanently");
header("Location: http://" . $_SERVER['HTTP_HOST'] . $lowerURI);

How to move to a new domain? The optimal strategy for 301 redirects

The most favorable strategy for moving to a new domain, taking into account the conditions of the two major search engines – Runet Yandex and Google:

  • 301 redirect from the old site to the new one.
  • whereas we do not do a redirect for the robots.txt file, but we assign the Host directive to the new domain.

Then the code for setting up a redirect on the old site can look like this:

RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond %{HTTP_HOST} !^www.site.com
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

Check robots.txt file for the old site:

User-agent: Google
Host: newsite.com

Generation of 301 redirects

If you are not a tech-savvy, then you can use the services of generating basic redirects:

  • http://www.webconfs.com/htaccess-redirect-generator.php
  • http://www.rapidtables.com/web/tools/redirect-generator.htm

On such services, you can only substitute your own data and immediately get the ready code for redirects between domains, directories or URLs.

How to check 301 redirects?

After each logical change of the redirect 301 work, it is necessary to check the site’s operability:

  • Does the site actually work?- Go to the main page
  • go through the main sections and pages of the site

You can use a redirect checker tool.

Also, for more thorough testing of redirects, you can use the following services:

  • http://bertal.ru – as much as possible detailed information on the server’s answers.
  • http://www.internetmarketingninjas.com/header-checker/.

How and when to use the 301 redirect vs. Canonical?

Although there are some nuances, Google provides some clear rules, so that he understands exactly what we want to say. In simple words, here’s how the search engines understand these instructions:

301 – Hey, Search Engines: my page is no longer here, and it’s moved to a new page. Please delete the old page from the index and transfer its link juice to a new page.

Canonical – Hey, Search Engines (for most search engines): I have several versions of this page (or content), please index only the version of the page that is canonical. I will keep other pages accessible to people so that they can see them, but, Search Engine, do not include them in your index and please transfer the link juice to my preferred page.

When is it better to use 301 redirects?

  • By default – it is the preferred method
  • For pages – if the page has permanently moved or has been replaced by a new address
  • For domains – if the site has moved to a new domain (site’s sale, rebranding, etc.
  • For 404 error pages and content that has lost its relevance (subject to appropriate content). For example, if you remove a product from a specific directory, you can make a redirect to a similar product, or to the URL category that this product belongs to.

When is it better to use rel=”canonical”?

  • When 301 redirects cannot be performed, or their implementation will take too much time
  • Duplicate content, but you want to keep both pages for people (for example, show different clothes on different URLs)
  • Pages with several different URL, in essence, one page (for example, catalog sorting, tracking of partner links, etc.
  • Cross-domains, when both sites are similar, but similar content should be added on each of the domains.


In general, both options allow keeping the link juice and they will be interpreted similarly by Google. However, in general, 301-redirect is the preferred method.

Mistakes when using redirects

Any multi-step redirect. If possible, it is advisable not to allow multi-step redirects, so that it works more quickly, and a maximum of link juice is transmitted.

Using the wrong type of redirects. When choosing the type of redirect, it is necessary to take into account the nuances of each of them.

Implementation of internal redirects without changing links to new addresses. After performing all redirects on your site, you need to check that every page of your site already refers to a new one, and don’t add links to the pages from which the redirection occurs on the site. That`s a typical mistake that everybody makes. So, to be aware of any status has been changed, use website monitoring tool. It allows you to track all the website changes and make proper corrections.

Redirect to irrelevant pages / content. Redirection should always direct to the most relevant page: either on a similar page or on a branch of the catalog/section to which this page belonged.

Wrong choice of using rel=canonical vs. 301 redirect. See above.

Redirect, the end point of which is not the 200th page. Redirection should lead to a properly functioning page with 200 server responses. Otherwise, it is advisable not to confuse Google robots, for example, and give 404 an answer.

Redirect robots txt. Since, for example, you need to register the Host directive for Yandex when domains’ adhesion.

We hope that this guide will become a cheat sheet and a great assistant to use the 301 redirect for your site.


We have learned what a 301 redirect is and when we should use it. I hope will give you a clear idea. I have also given codes for 5 use cases. You can use them according to your need.

A 301 redirect is very important to SEO. If Google does not find any page then it will create a bad impression on your website. I will highly suggest you use a 301 redirect.

So if you need any assistance with this tutorial, leave a comment below and I will try to help you out!! I will look forward to your opinion in the comments section below.

You can subscribe to our newsletter. I always provide the latest update about my new contents that may help you. Please share this post with your friend if it is helpful for you. So that they can also learn How to create s 301 redirect properly for their websites.