Limited Time Offer!
For Less Than the Cost of a Starbucks Coffee, Access All DevOpsSchool Videos on YouTube Unlimitedly.
Master DevOps, SRE, DevSecOps Skills!
![](https://www.devsecopsnow.com/wp-content/uploads/2023/12/image-36.png)
What is RewriteEngine in virtual host?
RewriteEngine is a directive used to enable or disable the mod_rewrite Apache module in the configuration files of the Apache web server. One effective method for modifying, rewriting, or redirecting URLs according to predefined rules is the mod_rewrite module. This can be helpful for a number of things, like making URLs that are pleasant to search engines, enforcing URL canonicalization, and rerouting traffic.
![](https://www.devsecopsnow.com/wp-content/uploads/2023/12/image-34.png)
This is a quick rundown of how RewriteEngine is usually applied in an Apache server’s virtual host configuration:
1 . Enabling the Rewrite Engine:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options FollowSymLinks
AllowOverride All
</Directory>
RewriteEngine On
# Additional rewrite rules go here
</VirtualHost>
In this instance, the mod_rewrite engine is enabled within the particular virtual host by using RewriteEngine On. The AllowOverride All directive permits the use of extra rewrite rules contained in.htaccess files located in the designated directory.
![](https://www.devsecopsnow.com/wp-content/uploads/2023/12/image-35.png)
2 . Defining Rewrite Rules:
After enabling RewriteEngine, you can set different rewrite rules to change or reroute URLs. For instance:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options FollowSymLinks
AllowOverride All
</Directory>
RewriteEngine On
# Redirect example.com/old-page to example.com/new-page
RewriteRule ^old-page$ /new-page [R=301,L]
</VirtualHost>
Here, the rule matches the URL path using regular expressions, and if it finds one, it sends the request with a 301 (permanent) redirect to a new URL, /new-page.
Keep in mind that you must either restart the Apache server or reload the configuration for these changes to take effect. For these directives to function, the mod_rewrite module needs to be installed and activated on the server.