Enable mod_rewrite for Apache on CentOS 7 Rumi, October 25, 2020 The mod_rewrite module is enabled by default on CentOS 7. If you find it is not enabled on your server, you can enable it by editing 00-base.conf file located in /etc/httpd/conf.modules.d/ directory. sudo nano /etc/httpd/conf.modules.d/00-base.conf Add or uncomment the following line: LoadModule rewrite_module modules/mod_rewrite.so Save and close the file, then restart the httpd service: sudo systemctl restart httpd Enable .htaccess File Once the mod_rewrite module has been activated, you can set up your URL rewrites by creating an .htaccess file in your default document root directory. A .htaccess file allows us to modify our rewrite rules without accessing server configuration files. For this reason, .htaccess is critical to your web server. Before we begin, we need to allow Apache to read .htaccess files located under the /var/www/html directory. You can do this by editing httpd.conf file: sudo nano /etc/httpd/conf/httpd.conf Find the section <directory /var/www/html> and change AllowOverride None to AllowOverride All <Directory /var/www/html> AllowOverride All </Directory> Save and exit. Now restart Apache to put the change into effect: sudo systemctl restart httpd Configure Rewrite Module In this section, we will explain basic mod_rewrite syntax and give some examples. Redirect www to non-www If you want to redirect users from www to a plain non-www domain, you will need to create .htaccess file in Apache document root directory. Change directories to your Document root: cd /var/www/html Create the .htaccess file: sudo nano .htaccess Add the following content: RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] Save and exit the file. We can use curl to test that the www domain redirects to the non-www domain: curl -I http://www.yourdomain.com You should see the following output: HTTP/1.1 301 Moved Permanently Date: Mon, 03 May 2016 18:20:53 GMT Server: Apache/2.4.6 (CentOS) Location: http://yourdomain.com/ Content-Type: text/html; charset=iso-8859-1 Above output shows the non-www redirect location http://yourdomain.com/ Redirect All Website Pages If you want to redirect all pages from “olddomain.com” to “newdomain.com”, edit the .htaccess file: sudo nano /var/www/html/.htaccess Add the following content: Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www.olddomain.com$ [OR] RewriteCond %{HTTP_HOST} ^olddomain.com$ RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L] Save and exit the file. Now, use curl to test that the “www.olddomain.com” domain redirects to the “www.newdomain.com” domain: curl -I http://www.olddomain.com You should get a 301 Moved Permanently response that shows you the new domain redirect location. Deny File Type Access If you want to deny users to access specific file types such as: .pdf, .css, .gif, .png, or .bmp then edit your .htacces file: sudo nano /var/www/html/.htaccess Add the following content: RewriteEngine on RewriteRule .*\.(pdf|css|gif|png|bmp)$ - [F,NC] Save and exit the file. Src: https://devops.ionos.com/tutorials/install-and-configure-mod_rewrite-for-apache-on-centos-7/ Administrations Apache2CentOS 7