Mod Rewrite problem

Tag: apache , mod-rewrite , redirect Author: zy125400 Date: 2009-09-25

.htacces

Options +FollowSymLinks
RewriteEngine On

RewriteBase / 
RewriteRule ^([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2&var3=$3 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2&var3=$3&var4=$4 [L]


RewriteRule ^([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1 [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2 [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2/$3 [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2/$3/$4 [R=301,L]

There is folder sinj.com.hr/administracija and when I try to access http://localhost/sinj.com.hr/administracija I am redirected to http://localhost/sinj.com.hr/administracija?var1=administracija What I would like is when user enters http://localhost/sinj.com.hr/administracija that he is redirected to http://localhost/sinj.com.hr/administracija/index.php. I tried to do this with header("Location:... ") but it always redirects me to http://localhost/sinj.com.hr/administracija?var1=administracija. If folder administracija is renamed then header() function works. Any ideas how to solve this?

Thanks, Ile

This belongs on ServerFault.
That's no reason to modify the tags. It needs 5 votes to migrate a question to serverfault, but modifying the tags is the decision of just one person which defeats this democratic system.
First time heard of it now

Best Answer

Try this rule to test if the request can be mapped to a directory that contains an index.php file:

RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^ %{REQUEST_URI}/index.php

Additionally you can use this single rule to redirect any requests with a URL path that ends with a slash the one without:

RewriteRule ^(.+)/$ sinj.com.hr/$1 [R=301,L]

comments:

not working, but thanks for try
It works... First time I tried I put it at the end of code... These first two lines must be set before last 4 lines. Uh, you saved my day :) Thanks a lot!
Well, now there's another problem... For example, if there is folder "vijesti" and it doesn't contain index.php and then if I try to access sinj.com.hr/vijesti I'm redirected to ...vijesti/var1=vijesti ...This time actually I don't need redirection to folder. Any solution for this?