Website developers sometimes use .htaccess rules to implement URL redirects for their websites.
However this does not work for Nginx web server powered websites.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to implement URLs redirects.
In this context, we shall look into the process of configuring redirects in Nginx.
Basically the easiest way of setting redirects are "temporary redirects" and "permanent redirects".
Temporary redirects are useful to serve URLs temporarily from a different location. It is particularly useful while performing maintenance to redirect users to the maintenance page.
However, permanent redirects indicate that the old URL no longer servers the content and the browsers should not attempt to access it anymore. These are particularly useful in situations like change in the domain names.
In Nginx, the configuration file typically found in the document root directory of the sites, "/etc/nginx/sites-available/directory_name.conf", handles these redirects. Formats for some of the commonly used redirect codes are given below:
Temporary Page to Page Redirect
server {# Temporary redirect to an individual pagerewrite ^/oldpage$ http://www.domain.com/newpage redirect;}
Permanent Page to Page Redirect
server {# Permanent redirect to an individual pagerewrite ^/oldpage$ http://www.domain.com/newpage permanent;}
Permanent www to non-www Redirect
server {# Permanent redirect to non-wwwserver_name www.domain.com;rewrite ^/(.*)$ http://domain.com/$1 permanent;}
Redirect to www permanently
server {# Permanent redirect to wwwserver_name domain.com;rewrite ^/(.*)$ http://www.newdomain.com/$1 permanent;}
Permanent Redirect an old URL to New URL
server {# Permanent redirect to new URLserver_name olddomain.com;rewrite ^/(.*)$ http://newdomain.com/$1 permanent;}
We have added the redirect using the rewrite directive. The "^/(.*)$" regular expression will use everything after the / in the URL. For example, http://olddomain.com/index.html will redirect to http://newdomain.com/index.html.
Redirect HTTP to HTTPS
server {# Redirect to HTTPSlisten 80;server_name domain.com www.domain.com;return 301 https://example.com$request_uri;}After placing these rewrite rules, it is a good idea to test the configuration prior to running a restart. Nginx syntax can be checked with the -t flag to ensure there is not a typo present in the file.
nginx -t
If it does not return any result, then the syntax is correct. Thus we can reload Nginx for the redirects to take effect.
systemctl restart nginxThis guide will show you the different ways with which you can implement URLs redirects using Nginx.