> ## Content Index
> Fetch the complete content index at: https://blog.alphavps.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Setting up redirects using .htaccess files
- URL: https://blog.alphavps.com/setting-up-redirects-using-htaccess-files/
- Published: 2024-12-19T08:34:34.000Z
- Updated: 2024-12-19T08:34:34.000Z
- Author: David Filipov
- Tags: Tutorials, Web Servers, CMS & Websites

Htaccess or Hypertext Access is a configuration file that is used to set per-directory settings on apache-based web servers. 

While .htaccess can be used for a lot of different server configurations in this guide, we will go over how to use .htaccess files to configure redirects for your website and give you a few scenarios in which you might want to use it.

## Installing Apache

First, we will install the apache web server

```
apt update && apt upgrade
apt-get install apache2
```

Then we will start the web server

```
systemctl enable apache2
systemctl start apache2
```

You can then enter the IP of the server into your browser and you will get a page similar to this:

![](https://blog.alphavps.com/content/images/2024/11/image.png)

## Enabling .htaccess file

You will need to edit the apache configuration. To do so enter the following file:

```
nano /etc/apache2/apache2.conf
```

Locate the section that starts with `<Directory>` and contains the directory path for the directory you want to allow .htaccess files in.

For example, if you want to allow `.htaccess` to have an effect on files in the `/var/www/html` directory, you would look for a section that looks like this:

```
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
```

This will allow .htaccess to have control over all other subdirectories under /var/www/

The `AllowOverride` line specifies what directives `.htaccess` files can override in the main Apache configuration. Change this line to `All` to allow all directives in .htaccess files.

```
AllowOverride All
```

Save the configuration and restart Apache:

```
sudo systemctl restart apache2
```

# Setting up redirects

In order for us to set up redirects correctly we will need to be aware of a few HTTP status codes first:

## HTTP Status Codes

**301**\-This code informs the client that the site they are looking for was been relocated permanently and redirects them to the new URL automatically

**302**\- This code is used when the website is temporarily moved to a new URL

**404** \-This code informs the client that the webpage they are looking for doesn't exist. You can use htaccess to set up a custom 404 page.

## Configuring the redirects

To set up a redirect create the .htaccess file in the `/var/www` directory:

Redirect a page to another page with the following config:

```
RewriteEngine On
Redirect 301 /old-web-page.html https://www.example-web-site.com/new-web-page.html
```

Redirect from one URL to another:

```
RewriteEngine On
RewriteRule ^old-domain.com$ /new-domain.com [R=301,L]
```

Redirect the whole website

```
RewriteEngine On
Redirect 301 https://www.old-example-web-site.com https://www.example-web-site.com
```

You can set up a custom 404 page. If the client tries to access a page that is no longer up you can redirect them to your custom 404 page

```
RewriteEngine On
Redirect 404 https://www.example-web-site.com/old-page.html /404.html
```

Don't forget to specify the correct HTTP status code for the redirect you are performing.