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.
Different ways of implementing Redirects?
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.
How to configure URLs redirects in Nginx?
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
# Temporary redirect to an individual page
rewrite ^/oldpage$ http://www.domain.com/newpage redirect;
Permanent Page to Page Redirect
# Permanent redirect to an individual page
rewrite ^/oldpage$ http://www.domain.com/newpage permanent;
Permanent www to non-www Redirect
# Permanent redirect to non-www
rewrite ^/(.*)$ http://domain.com/$1 permanent;
Redirect to www permanently
# Permanent redirect to www
rewrite ^/(.*)$ http://www.newdomain.com/$1 permanent;
Permanent Redirect an old URL to New URL
# Permanent redirect to new URL
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
# Redirect to HTTPS
server_name domain.com www.domain.com;
return 301 https://example.com$request_uri;
Testing Nginx Configuration
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.
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 nginx