The .htaccess file is a crucial website file that manages a website’s configuration. The .htaccess is a configuration file in Apache-based web servers that adds more configuration options such as redirection, security, PHP settings, etc. It enables you to make changes to your website setup without having to edit server configuration files.
In the knowledge base article, we will share the primary and most used .htaccess rules which are ONLY applicable on LAMP Stack running on Apache.Â
Table of Content:
- Forcing HTTP to HTTPS
- Forcing SSL and www
- Forcing SSL and non-www
- Redirect from non-www to www
- Redirect from www to non-www
- Redirect a domain to sub-directory
- Redirect old domain to new domain
- Block wp-login.php
- Block access to specific IP(s)
- Block IP with exception(s)
- 301 Permanent Redirect
- 302 Temporary Redirect
- Most common error codes
Let’s begin the steps for LAMP Stack.Â
First, you must connect your server via SSH or SFTP using Master User or Application User.
Note: You can see the instructions on how to connect your application via SSH and SFTP from our knowledge base article.
1) Forcing HTTP to HTTPS
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
2) Forcing SSL and www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC]
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
3) Forcing SSL and non-www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
4) Redirect from non-www to www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [L,R=301]
5) Redirect from www to non-www
RewriteEngine On
RewriteRule ^(.*)$ http://www.yourdomain.com [NC]
RewriteCond %{HTTP_HOST} ^yourdomain.com/$1 [L,R=301]
6) Redirect a domain to a sub-directory
RewriteCond %{HTTP_HOST} ^example.com$
RewriteCond %{REQUEST_URI} !^/sub-directory name/
RewriteRule (.*) /subdir/$1
7) Redirect Old Domain to New Domain
RewriteEngine on
RewriteCond %{HTTP_HOST} !http://old-domain.com$ [NC]
RewriteRule^(.*)$ http://new-domain.com/$1 [L,R=301,NC]
8) Block wp-login.php
<Files wp-login.php>
order deny,allow
deny from all
allow from x.x.x.x
</Files>
9) Block access to specific IP(s)
# Block Single/Multiple IP
<Limit GET POST>
order allow,deny
deny from x.x.x.x
deny from xx.xx.xx.xx
allow from all
</Limit>
10) Block IP with exception(s)
# Just Allow a Single IP
<Limit GET POST>
order deny,allow
deny from all
allow from xx.xx.xx.xx
</Limit>
11) 301 Permanent Redirect
Redirect 301 / http://example.com/
12) 302 Temporary Redirect
Redirect 302 / testdomain.com to http://newdomain.com/
13) Most common error codes
Creating custom error pages is essential since it allows you to offer website visitors a nice error message, such as if a URL on your website does not work. Simply construct your own custom error page and save it in the webroot or another directory. This avoids the inconvenient 404 File Not Found error.
Here, we will take an example of a 404 error and a document called 404.html placed in a different directory called error.
The document 404.html, like the others on your website, is a standard HTML document that can display whatever content you add in the custom error document.
a) Client-Side Error
- 400 – Bad request
- 401 – Authorization Required
- 403 – Forbidden
- 404 – File Not Found
b) Server-Side Error
- 500 – Internal Server Error
- 501 – Not Implemented
- 502 – Bad Gateway
- 503 – Service Unavailable
a) Client-Side Error
ErrorDocument 400 /error/custom400.html
ErrorDocument 401 /error/custom401.html
ErrorDocument 403 /error/custom403.html
ErrorDocument 404 /error/custom404.html
b) Server-Side Error
ErrorDocument 500 /error/custom500.html
ErrorDocument 501 /error/custom501.html
ErrorDocument 502 /error/custom502.html
ErrorDocument 503 /error/custom503.html
ErrorDocument 503 /error/custom504.html
Note: If you encounter a 5XX Server Error, your custom error page may be unavailable. It is determined by the precise nature of the error. Nonetheless, it would be best if you create them.