The .htaccess file is a very powerful tool on your cpanel or apache based hosting and acts as a configuration file for various items. It is super handy to setup things like redirects, error pages, additional security and much more.
One thing to note, if on your first go, you can’t locate this file, either on your Mac, FTP program or Cpanel file manager, try showing hidden files and it should appear for you.
Firstly, lets set some default options for the file, this can go at the very top of your .htaccess file.
Options +FollowSymLinks RewriteEngine On RewriteBase /
It is a Google recommendation that only one version (either the with or without the www) of your site is available and the unwanted version correctly redirects users with a 301 redirect.
# any requests to the non-www domain should be transferred to the www. version RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
If your website hosting has a security certificate (SSL) installed, then it would be best to make use of this and also redirect users to the https:// version of the site in a similar manner to above. Add the below code in addition to the above to ensure all users hit the https, secure version of your site.
# if this is a secure site, tranfer to HTTPS version as well RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
There are some quick security holes that can be plugged by just a few lines in the .htaccess file. The below code will stop users being able to view all of your directory structure (something hackers will target to find more about your website structure) and safeguard against the .htacesss and other configuration files that may contain important database passwords from being viewed.
#turn off directory browsing Options All -Indexes #prevent viewing of the .HTACCESS <Files .htaccess> order allow,deny deny from all </Files> #prevent viewing of the config file <Files /includes/config.php> order allow,deny deny from all </Files>
In the event a page cannot be found, your web server will return a default 404 message, which may look a little bland. Adding the below line will instead return a file of your choice.
#404 Not Found error page ErrorDocument 404 /files/404.php
When launching a new site, an important step is to ensure the previous urls link to the current pages to avoid lost traffic or Google rank. 301 redirects in your htaccess file perform this task well.
Simply add the old page first, in a relative format, so without any domain name (pages/contact-us.html shown below) then separated with a space the full new location url (https://www.yourwebsite.com/contact/)
#Sample 301 Redirect 301 pages/contact-us.html https://www.yourwebsite.com/contact/