Linux-Noob Forums
My mod_rewrite guide - Printable Version

+- Linux-Noob Forums (https://www.linux-noob.com/forums)
+-- Forum: Linux Server Administration (https://www.linux-noob.com/forums/forum-8.html)
+--- Forum: LAMP (https://www.linux-noob.com/forums/forum-83.html)
+--- Thread: My mod_rewrite guide (/thread-2804.html)



My mod_rewrite guide - hijinks - 2005-03-05


So I got bored and since I'm doing a lot of mod_rewrite work lately, I have decided to do a little mod_rewrite guide. If anyone wants something done I can try to do it.. but for now I will just explain what things do. The syntax of mod_rewrite is almost like sendmail.. but once you understand it you can do some really great things.

 

So we'll start off with just a common use for mod_rewrite. I always keep all my images in like /var/www/html/images. So this will show a default error image not found image instead of that nasty broken image box with the X in it. So you want to create a .htaccess file in the /var/www/html/images dir. Then place the following lines in it.

 



Code:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+) /images/404.png




 

So the first line just tells apache to turn on mod_rewrite.

 

The second line is a conditional statement. It says move on to the next line if the requested file does not exist. So the condition is the !-f. The -f checks if the request is for a file. So the ! in front of it is a common programming practice and that basically negates what comes after it. So the total line means if the request is for a file that does no exist in the directory

 

Then the last line says take any input and replace it with /images/404.png.

 

So if i have this in html

 



Code:
<img src=/images/bla.jpg>




 

if there is no bla.jpg in the images dir it will show a 404.png in its place. Don't worry about image format differences. The browser will hande it.

 

more to come when i get bored.




My mod_rewrite guide - tek-69 - 2005-03-06


Everything went fine however i did run into one snag. when i tried to test it out it didnt seem to be reading the htaccess file so nothing happened. I tried alot of differant stuff like restarting httpd and checking for typos. What I had to do to make it work was edit my httpd.conf file. So if anyone tries this and it doesn't work, try adding the following to httpd.conf ....

 



Code:
#added by tek begin
#
<Directory /var/www/html/imagestek/>
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>
#




 

cut an paste it right into httpd.conf around line 390, right after it say AccessFileName .htaccess

next change the name in the comment to your own :P

then adjust the directory path to suit your needs.

after i did that i restarted httpd and it worked just like hijinx said it would.

 

thanks for the info hijinx