Thursday, June 9, 2016

mod rewrite - How to enable mod_rewrite for Apache 2.2



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?


Answer



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.




RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]




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.


No comments:

Post a Comment