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:
- Edit the file /etc/sysconfig/apache2 as root:
- 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"
- Add rewrite to the content in the list between the “
- search for APACHE_MODULES, you should find a line like this
- Save the changes and quit
- run /etc/init.d/apache2 restart to restart the Apache server
- 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
</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
- Edit the file /etc/apache2/default-server.conf with your prefered editor
- Search for AllowOverride – it should be below the line
<Directory "/srv/www/htdocs">
- Change
AllowOverride None
toAllowOverride All
– this will allow custom .htaccess rewrite rules - Save your changes and exit
- Search for AllowOverride – it should be below the line
- run SuSEconfig to update the apache configuration files
- 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.
Leave A Comment