Rewrite in Apache does not work anymore

Installed Apache on Suse Linux 10. Configured httpd.conf including a rewrite rule in a virtual host.

No configuration errors, but it did not work at all! After a while I discovered that the mod-rewrite module had been installed, but not  enabled with this version of Apache (2.2.x). This URL gives a pretty good hand-out how to do this. Because I’m not sure this link will last for ever, a copy of (part of) the text in it with a small addition of my side:

  1. Edit the file /etc/sysconfig/apache2 as root:
    1. search for APACHE_MODULES, you should find a line like this
      APACHE_MODULES="suexec access actions alias auth auth_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif userdir ssl php4"
    2. Add rewrite to the content in the list between the “
  2. Save the changes and quit
  3. run /etc/init.d/apache2 restart to restart the Apache server
  4. run SuSEconfig to update the apache configuration files

Now, the mod_rewrite is enabled and integrated.

Check if mod_rewrite is installed and integrated in Apache

You can check this e.g. with the following php file. Create a file in your document root of your webserver (default on SuSE: /srv/www/htdocs) and copy the following content into this file:

<?php phpinfo(); ?>

When you view this file with your browser, search for rewrite – you should find one entry. If not – check if you did all steps 1 to 3.

– Another test  from Jobacle (my small addition):

create .htaccess-file in the document-root folder with the following content:

Options +FollowSymlinks
RewriteEngine On

When you view this directory with a browser and you get a 500-error: rewrite-engine is no good….

Test .htaccess rewrite rule on SuSE linux Apache

The next step is to create an initial .htaccess rewrite rule to test if it’s working now. Create a file .htaccess in your document root (default on SuSE: /srv/www/htdocs) with the following content:

Options +FollowSymlinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule user/(.*)$ /user.php?user=$1

This is a simple rule that redirects all urls with the format user/something to the script /user.php with the something as parameter user. The IfModule prevents Apache errors when mod_rewrite should disappear.

If this doesn’t work – there is another pitfall of the default SuSE Apache installation: you’re not allowed to create custom .htaccess files! So – lets enable them

Enable custom Apache .htaccess mod_rewrite files on SuSE linux

  1. Edit the file /etc/apache2/default-server.conf with your prefered editor
    1. Search for AllowOverride – it should be below the line <Directory "/srv/www/htdocs">
    2. Change AllowOverride None to AllowOverride All – this will allow custom .htaccess rewrite rules
    3. Save your changes and exit
  2. run SuSEconfig to update the apache configuration files
  3. run /etc/init.d/apache2 restart to restart the Apache server

That’s all, now you can test the .htaccess rewrite rule again and it will work.

By | 2010-08-13T16:59:49+00:00 June 21st, 2010|Categories: App. Server|Tags: , , |0 Comments

About the Author:

Leave A Comment