How To Rewrite URLs with mod_rewrite for Apache on Ubuntu 20

How To Rewrite URLs with mod_rewrite for Apache on Ubuntu 20

Prerequisites

To follow this tutorial, you will need:

One Ubuntu 16.04 server set up with this initial server setup tutorial, including a sudo non-root user and firewall.
Apache 2 installed on your server by following Step 1 of How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 16.04.
Step 1 — Enabling mod_rewrite
First, we need to activate mod_rewrite. It’s available but not enabled with a clean Apache 2 installation.

sudo a2enmod rewrite
This will activate the module or alert you that the module is already enabled. To put these changes into effect, restart Apache.

sudo systemctl restart apache2
mod_rewrite is now fully enabled. In the next step we will set up an .htaccess file that we’ll use to define rewrite rules for redirects.

Step 2 — Setting Up .htaccess
An .htaccess file allows us to modify our rewrite rules without accessing server configuration files. For this reason, .htaccess is critical to your web application’s security. The period that precedes the filename ensures that the file is hidden.

We will need to set up and secure a few more settings before we can begin.

By default, Apache prohibits using an .htaccess file to apply rewrite rules, so first you need to allow changes to the file. Open the default Apache configuration file using nano or your favorite text editor.

sudo nano /etc/apache2/sites-available/000-default.conf
Inside that file, you will find a block starting on the first line. Inside of that block, add the following new block so your configuration file looks like the following. Make sure that all blocks are properly indented.

/etc/apache2/sites-available/000-default.conf

Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted

. . .

Save and close the file. To put these changes into effect, restart Apache.

sudo systemctl restart apache2
Now, create the .htaccess file in the web root.

sudo nano /var/www/html/.htaccess
Add this line at the top of the new file to activate the rewrite engine.

/var/www/html/.htaccess
RewriteEngine on
Save the file and exit.

5/5 - (2 votes)