How to enable mod_rewrite for Apache 2.2
apache, mod-rewrite
Solution
In order to use `mod_rewrite` you can type the following command in the terminal:
sudo a2enmod rewrite
Restart apache2 after
sudo /etc/init.d/apache2 restart
or
sudo service apache2 restart
or as per new unified System Control Way
sudo systemctl restart apache2
Then, if you'd like, you can use the following `.htaccess` file.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
The above `.htaccess` file (if placed in your `DocumentRoot`) will redirect all traffic to an `index.php` file in the `DocumentRoot` unless the file exists.
So, let's say you have the following directory structure and httpdocs is the `DocumentRoot`
httpdocs/
.htaccess
index.php
images/
hello.png
js/
jquery.js
css/
style.css
includes/
app/
app.php
Any file that exists in httpdocs will be served to the requester using the `.htaccess` shown above, however, everything else will be redirected to `httpdocs/index.php`. Your application files in `includes/app` will not be accessible.
Problem
I've got fresh install of Apache 2.2 on my Vista machine, everything works fine, except mod rewrite. I've uncommented ``` LoadModule rewrite_module modules/mod_rewrite.s ``` but none of my rewrite rules works, even simple ones like ``` RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404 ``` All the rules I'm using are working on my hosting, so they should be ok, so my question is, is there any hidden thing in apache configuration, that could block mod rewrite?