How to Redirect URLs Using Nginx

How to redirect URLs using Nginx

URL redirection, also called URL forwarding, allows multiple URL addresses to be associated with a single page. This can include a form, the entire website, or a web application. This functionality is executed through a specialized HTTP response called an HTTP redirect. Redirecting URLs involves pointing an existing URL to a new one. This effectively communicates to your visitors and search bots that the URL has a new destination. This redirect can be either a temporary or a permanent redirection. Nginx, a web server, has gained more and more popularity over the past few years. It was initially created as a high-performance web server. Using an asynchronous event-driven architecture, Nginx can increase speed and stability when handling high traffic. This article will show you how to redirect URLs using nginx in an easy-to-follow guide.

Prerequisites

  • Linux VPS hosting with Nginx as the web server
  • SSH root access or a normal system user with sudo privileges

Redirection Types

There are only two redirection types: permanent and temporary. The permanent redirection has HTTP code 301, while the temporary redirection has HTTP code 302. The difference between 301 and 302 redirects lies in how they affect the redirection of URLs on a website. This can have a significant impact on your on-page SEO. To clarify, below is an explanation of the differences between 301 and 302 redirects in detail:

Permanent Redirect (301)

As the name indicates, a permanent redirect means the old URL will no longer be used. Visitors will be permanently redirected to the new URL. This means that when visitors access the old URL, they will be automatically redirected to the new URL.

301 redirects also tell search engines that the old URL page has been made permanent and redirected to the new URL. Search engines will pass on any link authority directly from the old URL to the new URL. A 301 redirects are usually used for website pages that have been moved to a new URL or permanently deleted. This is akin to moving your house permanently and letting everyone know your new address.

Temporary Redirect (302)

Redirect 302 is known as a “temporary redirect”. This means the old URL has been moved, and visitors are redirected to the new URL, just like with a 301.

The difference is that a 302 tells search engines that the old URL page is only temporarily redirected to the new URL. This signals to search engines that the old URL will return and will still maintain the page’s ranking of the old URL. As such, a 302 redirect is typically used for website pages that will return to the original URL after a while. Think of this as leaving your house when you go on an extended vacation and have your mail sent there.

Redirects are helpful when you send website visitors to a different URL according to the page they are trying to access. Here are some popular reasons to use them:

  • Reroute visitors from discontinued pages (which would otherwise show a 404 error) to the most similar page.
  • Keep old URLs operational after moving from one software system to another.
  • Take visitors from a short and simple, memorable URL to the correct page.
  • Redirecting outdated .html URLs or non-www to their www counterparts.
  • Retain seasonal page content with limited-time deals; the same offer will return next season. Think of Black Friday count-down timer pages.

When using Nginx as the web server, you can generally create redirects using rewrite or return directives. Incorporating a redirect map can be beneficial for extensive redirect lists.

Use RETURN Directive

We can use the return directive in the server context to redirect HTTP to HTTPS or from one domain name to another.

server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}

The following configuration should also work if you want to redirect a URL to another.

location = /blog/how-to-redirect-in-nginx {
return 301 $scheme://blog.example.com/how-to-redirect-in-nginx
}

Use REWRITE Directive

We can place both RETURN and REWRITE directives in the server and location context in the Nginx configuration file.

server {
listen 80;
server_name example.com www.example.com;
rewrite ^/(.*)$ https://example.com/$1 redirect;
}

We can use the above config to redirect HTTP to HTTPS temporarily. To change it to a permanent redirect, simply replace redirect with permanent.

Another example is to redirect a URL using rewrite, but this time, we use location context.

location = /how-to-redirect-in-nginx {
rewrite ^/how-to-redirect-in-nginx?$ /redirection-in-nginx.html break;
}

Use MAP Directive

If you have many redirections, you can use Nginx MAP directive. Add the following to the top of your Nginx server block file.

map $request_uri $new_uri {
include /etc/nginx/redirect-map.conf;
}

Then, create a file /etc/nginx/redirect-map.conf, and you can put your old and new URLs there.

The file /etc/nginx/redirect-map.conf should contain something like this:

/blog/how-to-redirect-in-nginx /nginx-redirect;
/old.html /new.html;
/old-file.php /new-file.php;

Make sure to check the map file, it should contain ‘;’ at the end of each line or else it causes EOL error. Also, remember that you should restart Nginx every time you modify its configuration file to apply the changes.

That’s it! You have learned about configuring URL redirects in Nginx.

Of course, you don’t have to spend your time and follow this article to learn how to redirect URLs using Nginx. If you have an active VPS hosting service with us, you can ask our expert Linux admins to redirect URLs using Nginx for you. Simply log in to the client area, then submit a ticket. Our system administrators are available 24×7 and will take care of your request immediately.

If you liked this post on how to redirect URLs using Nginx, please share it with your friends on social media or leave a comment below.

Leave a Comment