A Technical SEO Guide To Redirects

Website redirects inform browsers and search engines like google details about a URL and the place to seek out the webpage.

It’s important to make use of redirects accurately as a result of they influence how web sites are crawled and listed by Google.

While most individuals consider redirects as an web detour signal, there may be far more occurring, and it’s surprisingly pleasant to find.

HTTP Response Status Codes

Browsers and search engine crawlers like GoogleBot are known as consumer brokers.

When a consumer agent tries to entry a webpage, what occurs is that the consumer agent makes a request, and the web site server points a response.

The response known as an HTTP response standing code. It gives a standing for the request for a URL.

In the scenario the place a consumer agent like GoogleBot requests a URL, the server offers a response.

For instance, if the request for a URL is profitable, the server will present a response code of 200, which implies the request for a URL was profitable.

So once you consider a GoogleBot reaching a web site and making an attempt to crawl it, what’s occurring is a collection of requests and responses.

The Meaning Of A Redirect

When we speak about a redirect, what we’re speaking about is a server response. It’s a response to a request for a URL.

If the URL exists at a unique URL (as a result of it was moved), the server tells the consumer agent that the URL request is being redirected to a unique URL.

The response code for a modified URL is often within the type of a 301 or 302 response standing code.

The total 3xx collection of response codes talk a lot data that may optionally be acted upon by the consumer agent.

An instance of an motion that the consumer agent can take is to save lots of a cache of the brand new URL in order that the subsequent time the outdated URL is requested, it should ask for the brand new URL as an alternative.

So, a 301 and a 302 redirect is greater than an web street signal that claims, “Go here, not there.”

3XX Series Of Status Codes

Redirects are extra than simply the 2 standing codes everyone seems to be accustomed to, the 301 and 302 response codes.

There are a complete of seven official 3xx response standing codes.

These are the totally different sorts of redirects out there to be used:

  • 300 Multiple Choices.
  • 301 Moved Permanently.
  • 302 Found.
  • 303 See Other.
  • 304 Not Modified.
  • 305 Use Proxy.
  • 306 (Unused).
  • 307 Temporary Redirect.
  • 308 Permanent Redirect.

Some of the above standing codes haven’t been round as lengthy and won’t be used. So, earlier than utilizing any redirect code apart from 301 or 302, ensure that the supposed consumer agent can interpret it.

Because GoogleBot makes use of the most recent model of Chrome (known as a headless browser), it’s straightforward to test if a standing code is appropriate by checking if Chrome acknowledges the standing code with a browser compatibility list.

For SEO, one ought to follow utilizing the 301 and 302 response codes except there’s a particular motive to make use of one of many different codes.

301: Moved Permanently

The 301 standing code is routinely referenced because the 301 redirect. But the official title is 301 Moved Permanently.

The 301 redirect signifies to a consumer agent that the URL (typically known as a goal useful resource or just useful resource) was modified to a different location and that it ought to use the brand new URL for future requests.

As talked about earlier, there may be extra data as effectively.

The 301 standing code additionally suggests to the consumer agent:

  • Future requests for the URL needs to be made with the brand new URL.
  • Whoever is making the request ought to replace their hyperlinks to the brand new URL.
  • Subsequent requests could be modified from GET to POST.

That final level is a technical subject. According to the official standards for the 301 status code:

“Note: For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead.”

For SEO, when search engines like google see a 301 redirect, they move the outdated web page’s rating to the brand new one.

Before making a change, you should be cautious when utilizing a 301 redirect. The 301 redirect should solely be used when the change to a brand new URL is everlasting.

The 301 standing code should not be used when the change is non permanent.

Additionally, when you change your thoughts later and return to the outdated URL, the outdated URL could not rank anymore and should take time to regain the rankings.

So, the principle factor to recollect is {that a} 301 standing code will likely be used when the change is everlasting.

302: Found

The fundamental factor to grasp concerning the 302 standing code is that it’s helpful for conditions the place a URL is briefly modified.

The that means of this response code is that the URL is briefly at a unique URL, and it’s recommended to make use of the outdated URL for future requests.

The 302 redirect standing code additionally comes with a technical caveat associated to GET and Post:

“Note: For historical reasons, a user agent MAY change the request method from POST to GET for the subsequent request. If this behavior is undesired, the 307 (Temporary Redirect) status code can be used instead.”

The reference to “historical reasons” could discuss with outdated or buggy consumer brokers that will change the request technique.

307: Temporary Redirect

A 307 redirect means the requested URL is briefly moved, and the consumer agent ought to use the unique URL for future requests.

The solely distinction between a 302 and a 307 standing code is {that a} consumer agent should request the brand new URL with the identical HTTP request used to request the unique URL.

That means if the consumer agent requests the web page with a GET request, then the consumer agent is required to make use of a GET request for the brand new non permanent URL and can’t use the POST request.

The Mozilla documentation of the 307 status code explains it extra clearly than the official documentation.

“The server sends this response to direct the consumer to get the requested useful resource at one other URI with identical technique that was used within the prior request.

This has the identical semantics because the 302 Found HTTP response code, with the exception that the consumer agent should not change the HTTP technique used: if a POST was used within the first request, a POST should be used within the second request.”

Other than the 307 standing code requiring subsequent requests to be of the identical sort (POST or GET) and that the 302 can go both method, all the things else is similar between the 302 and the 307 standing codes.

302 vs. 307

You could deal with a redirect by way of server config information .htaccess on Apache, instance.conf file on Nginx or by way of plugins in case you are utilizing WordPress.

In all situations, they’ve the identical syntax for writing redirect guidelines. They differ solely with instructions utilized in configuration information. For instance, a redirect on Apache will appear to be this:

Options +FollowSymlinks
RewriteEngine on
RedirectMatch 301 ^/oldfolder/ /newfolder/

(You can examine symlinks here.)

On Nginx servers, it should appear to be this:

rewrite ^/oldfolder/ /newfolder/ everlasting;

The instructions used to inform the server’s standing code of redirect and the motion command differ.

For occasion:

  • Servers standing code of redirect: “301″ vs. “permanent.”
  • Action command: “RedirectMatch” vs. “rewrite”.

But the syntax of the redirect ( ^/oldfolder/ /newfolder/ ) is similar for each.

On Apache, be sure that mod_rewrite and mod_alias modules (answerable for dealing with redirects) are enabled in your server.

Since probably the most extensively unfold server sort is Apache, listed here are examples for .htaccess apache information. Make certain that the .htaccess file has these two strains above the redirect guidelines and put the principles under them:

Options +FollowSymlinks
RewriteEngine on

Read the official documentation to learn more about the RewriteEngine.

To perceive the examples under, it’s possible you’ll discuss with the desk under on RegExp fundamentals.

* zero or extra occasions
+ One or extra occasions
. any single character
? Zero or one time
^ Start of the string
$ End of the string
a|b OR operadn “|” a or b
(z) remembers the match for use when calling $1

Redirect A Single URL

The commonest and extensively used sort of redirect is when deleting pages or altering URLs.

For occasion, say you modified URL from /old-page/ to /new-page/. The redirect rule can be:

RewriteRule ^old-page(/?|/.*)$ /new-page/ [R=301,L]


RedirectMatch 301 ^/old-page(/?|/.*)$ /new-page/

The solely distinction between the 2 strategies is that the primary one makes use of the Apache mod_rewrite module, and the second makes use of mod_alias. It could be carried out utilizing each strategies.

The common expression “^” means the URL should begin with “/old-page” whereas (/?|/.*)$ signifies that something that follows “/old-page/” with a slash “/” or with out an actual match should be redirected to /new-page/.

We may additionally use (.*), i.e., ^/old-page(.*), however the issue is, when you’ve got one other web page with an identical URL like /old-page-other/, it should even be redirected once we solely wish to redirect /old-page/.

The following URLs will match and be directed to a brand new web page:

/old-page/ /new-page/
/old-page /new-page/
/old-page/?utm_source=fb.com /new-page/?utm_source=fb.com
/old-page/child-page/ /new-page/

It will redirect any variation of the web page URL to a brand new one. If we use redirect within the following kind:

Redirect 301 /old-page/ /new-page/

…with out common expressions, all URLs with UTM question string, e.g., /old-page?utm_source=fb.com (which is frequent since URLs are was once shared over a social community) would find yourself as 404s.

Even /old-page and not using a trailing slash “/” would find yourself as a 404.

Redirect All Except

Let’s say we’ve got bunch of URLs like /class/old-subcategory-1/, /class/old-subcategory-2/, /class/final-subcategory/ and wish to merge all subcategories into /class/final-subcategory/. We want the “all except” rule right here.

RewriteCond %{REQUEST_URI} !/class/final-subcategory/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(class/). /class/final-subcategory/ [R=301,L]

Here, we wish to redirect all below /class/ on the third line besides whether it is /class/final-subcategory/ on the fourth line. We even have the “!-f” rule on the second line, ignoring any file like pictures, CSS, or JavaScript information.

Otherwise, if we’ve got some belongings like “/category/image.jpg,” it should even be redirected to “/final-subcategory/” and trigger a picture break.

Directory Change

If you probably did a class restructuring and wish to transfer all the things from the outdated listing to the brand new one, you need to use the rule under.

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

I used $1 within the goal to inform the server that it ought to bear in mind all the things within the URL that follows /old-directory/ (i.e., /old-directory/subdirectory/) and move it (i.e., “/subdirectory/”) onto the vacation spot. As a consequence, it is going to be redirected to /new-directory/subdirectory/.

I used two guidelines: one case with no trailing slash on the finish and the opposite one with a trailing slash.

I may mix them into one rule utilizing (/?|.*)$ RegExp on the finish, however it could trigger issues and add a “//” slash to the tip of the URL when the requested URL with no trailing slash has a question string (i.e., “/old-directory?utm_source=facebook” can be redirected to “/new-directory//?utm_source=facebook”).

Remove A Word From URL

Let’s say you may have 100 URLs in your web site with town title “chicago” and wish to take away them.

For the URL http://yourwebiste.com/example-chicago-event/, the redirect rule can be:

RewriteRule ^(.*)-chicago-(.*) http://%{SERVER_NAME}/$1-$2 [NC,R=301,L]

If the instance URL is within the kind http:// yourwebiste.com/instance/chicago/occasion/, then the redirect can be:

RewriteRule ^(.*)/chicago/(.*) http://%{SERVER_NAME}/$1/$2 [NC,R=301,L]


Having canonical URLs is a very powerful a part of SEO.

If lacking, you may endanger your web site with duplicate content material points as a result of search engines like google deal with URLs with “www” and “non-www” variations as totally different pages with the identical content material.

Therefore, you need to make sure you run the web site solely with one model you select.

If you wish to run your web site with the “www” model, use this rule:

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

For a “non-www” model:

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

Trailing slash can be a part of canonicalization since URLs with a slash on the finish or with out are additionally handled in a different way.

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

This will ensure /example-page is redirected to /example-page/. You could select to take away the slash as an alternative of including then you’ll need the opposite rule under:

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

HTTP To HTTPS Redirect

After Google’s initiative to encourage web site homeowners to make use of SSL, migrating to HTTPS is likely one of the generally used redirects that just about each web site has.

The rewrite rule under can be utilized to power HTTPS on each web site.

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

Using this, you may mix a www or non-www model redirect into one HTTPS redirect rule.

Redirect From Old Domain To New

This can be one of the vital used redirects once you resolve to rebrand and want to vary your area. The rule under redirects old-domain.com to new-domain.com.

RewriteCond %{HTTP_HOST} ^old-domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.old-domain.com$
RewriteRule (.*)$ http://www.new-domain.com/$1 [R=301,L]

It makes use of two circumstances: one with the “www” model of URLs and one other “non-www” as a result of any web page for historic causes could have incoming hyperlinks to each variations.

Most website homeowners use WordPress and should not want a .htaccess file for redirects however use a plugin as an alternative.

Handling redirects utilizing plugins could also be barely totally different from what we mentioned above. You could must learn their documentation to deal with RegExp accurately for the particular plugin.

From the prevailing ones, I might advocate a free plugin known as Redirection, which has many parameters to regulate redirect guidelines and lots of useful docs.

Redirect Bad Practices

1. Redirecting All 404 Broken URLs To The Homepage

This case usually occurs if you find yourself lazy to analyze your entire 404 URLs and map them to the suitable touchdown web page.

According to Google, they’re nonetheless all handled as 404s.

Yeah, it’s not a terrific follow (confuses customers), and we largely deal with them as 404s anyway (they’re soft-404s), so there’s no upside. It’s not critically damaged/dangerous, however extra complexity for no good motive – make a greater 404 web page as an alternative.

— 🍌 John 🍌 (@JohnMu) January 8, 2019

If you may have too many pages like this, you need to contemplate creating stunning 404 pages and interesting customers to browse additional or discover one thing apart from what they had been in search of by displaying a search choice.

It is strongly advisable by Google that redirected web page content material needs to be equal to the outdated web page. Otherwise, such a redirect could also be thought of a tender 404, and you’ll lose the rank of that web page.

2. Wrong Mobile Page-Specific Redirects

If you may have totally different URLs for desktop and cellular web sites (i.e., “example.com” for desktop and “m.example.com” for cellular), you need to ensure to redirect customers to the suitable web page of the cellular model.

Correct: “example.com/sport/” to “m.example.com/sport/”Wrong: “example.com/sport/” to “m.example.com”

Also, you need to be sure that if one web page is 404 on desktop, it also needs to be 404 on cellular.

If you haven’t any cellular model for a web page, you may keep away from redirecting to the cellular model and maintain them on the desktop web page.

3. Using Meta Refresh

It is feasible to do a redirect utilizing a meta refresh tag like the instance under:

If you insert this tag in /old-page/, it should redirect the consumer instantly to /new-page/.

Google doesn’t prohibit this redirect, but it surely doesn’t advocate utilizing it.

A meta refresh sort redirect ought to simply work. We don’t advocate it for two causes: UX (it retains the web page in browser historical past, afaik) & processing time (we have to parse the web page to see it). Once processed, it’s identical to a redirect.

— 🍌 John 🍌 (@JohnMu) March 2, 2018

According to John Mueller, search engines like google could not be capable of acknowledge that sort of redirect correctly. The identical can be true about JavaScript redirects.

4. Too Many Redirects

This message shows when you may have a mistaken common expression setup and leads to an infinite loop.

This page isn't workingScreenshot by creator, September 2022

Usually, this occurs when you may have a redirect chain.

Let’s say you redirected web page 1 to web page 2 a very long time in the past. You may need forgotten that web page 1 is redirected and determined to redirect web page 2 to web page 1 once more.

As a consequence, you’ll find yourself with a rule like this:

RewriteRule ^page1 /page2 [R=301,NC,L]
RewriteRule ^page2 /page1 [R=301,NC,L]

This will create an infinite loop and produce the error proven above.


Knowing what redirects are and which scenario requires a selected standing code is key to optimizing webpages correctly. It’s a core a part of understanding SEO.

Many conditions require exact information of redirects, resembling migrating a web site to a brand new area or creating a short lived holding web page URL for a webpage that can return below its regular URL.

While a lot is feasible with a plugin, plugins could be misused with out correctly understanding when and why to make use of a specific sort of redirect.

Featured Image: Paulo Bobita/Search Engine Journal