W3docs

How do you enable mod_rewrite on any OS?

To enable mod_rewrite on a PHP server, you will need to make sure that the Apache mod_rewrite module is installed and enabled.

To enable mod_rewrite on a PHP server, you will need to make sure that the Apache mod_rewrite module is installed and enabled. Here are the steps to enable mod_rewrite on different operating systems:

  1. Linux:
  • On a Linux server, you can check if mod_rewrite is installed by running the following command:

Check if mod_rewrite is installed

apache2ctl -M | grep rewrite

If mod_rewrite is installed, you should see rewrite_module in the output.

  • On Debian or Ubuntu systems, mod_rewrite is included by default. You can enable it using the following command:

sudo a2enmod rewrite
  • Finally, you need to make sure that the AllowOverride directive is set to All for your document root. This will allow you to use mod_rewrite rules in your .htaccess file.

  • Restart Apache to apply the changes:


sudo systemctl restart apache2
  • Once enabled, you can create a .htaccess file in your document root to define rewrite rules. For example:

RewriteEngine On
RewriteRule ^old-page$ /new-page [R=301,L]
  1. Windows:
  • On a Windows server, you can check if mod_rewrite is installed by looking for the mod_rewrite.so file in the Apache modules directory. The path varies by distribution:
    • Official Apache: C:\Apache24\modules
    • XAMPP: C:\xampp\apache\modules
    • WAMP: C:\wamp\bin\apache\apache<version>\modules
  • If mod_rewrite is not installed, you can download it from the Apache website and place the mod_rewrite.so file in the Apache modules directory.
  • Once mod_rewrite is installed, you can enable it by adding the following line to your Apache configuration file (usually httpd.conf in the Apache root directory):

LoadModule rewrite_module modules/mod_rewrite.so
  • Finally, you need to make sure that the AllowOverride directive is set to All for your document root. This will allow you to use mod_rewrite rules in your .htaccess file.

  • Restart Apache to apply the changes:


httpd -k restart
  1. Mac:
  • Note: macOS Catalina (10.15) and later removed the built-in Apache server. Modern macOS users typically install Apache via Homebrew (brew install httpd) or use local stacks like MAMP.
  • If using the built-in Apache (macOS Mojave or earlier), mod_rewrite is included by default. To enable it, uncomment the following line in your Apache configuration file (/etc/apache2/httpd.conf):

LoadModule rewrite_module libexec/apache2/mod_rewrite.so
  • If using Homebrew, mod_rewrite is enabled by default. You can verify it with httpd -M | grep rewrite.

  • Finally, you need to make sure that the AllowOverride directive is set to All for your document root. This will allow you to use mod_rewrite rules in your .htaccess file.

  • Restart Apache to apply the changes:


sudo apachectl restart

(For Homebrew: brew services restart httpd)

I hope this helps! Let me know if you have any questions.