Enable mod_rewrite on SuSE Linux

Description of the problem

By default, SuSE doesn’t enable the mod_rewrite rewrite module. It’s installed, but not enabled.
Follow these steps to install it.

Solution – enable mod_rewrite on SuSE linux

  1. Edit the file /etc/sysconfig/apache2as 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 “
    3. Save the changes and quit
  2. run SuSEconfig to update the apache configuration files
  3. run /etc/init.d/apache2 restart to restart the Apache server

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.

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
</IfModule>

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.confwith 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.