Wednesday 15 September 2010

.htaccess - Apache mod_rewrite infinite loop, cannot fix it -



.htaccess - Apache mod_rewrite infinite loop, cannot fix it -

my htaccess:

rewritebase / rewritecond %{request_filename} !-f rewritecond %{request_filename} !-d rewriterule ([^/.]+)/([^/.]+)(.*) /application/?path=$1/$2$3 [l,qsa] rewriterule ^$ /application/?path=acfrontpage/getmainpage [l,qsa] rewriterule (.*) /application/index.php?path=$1 [l,qsa]

this line causes infinite redirect:

rewriterule (.*) /application/index.php?path=$1 [l,qsa]

but need if previous rules didn't match, redirect index.php file. how can it?

from logs doing this:

split uri=/application/?path=application/ -> uri=/application/, args=path=application/&path=application/&path=application/&path=application/&path=application/&path=application/&path=application/&path=application/&path=application/&path=application/

========================

@anubhava

i tried suggested reply , works except base of operations domain i.e.: http://example.com/

rewritecond applicable next rewriterule. tweak rules avoid rewrites existing file or directories:

rewriteengine on rewriterule ^$ /application/?path=acfrontpage/getmainpage [l] # skip rewrite files/directories rewritecond %{request_filename} -f [or] rewritecond %{request_filename} -d rewriterule ^ - [l] rewriterule ^([^/.]+)/([^/.]+)(.*)$ /application/?path=$1/$2$3 [l,qsa] rewriterule ^(.+)$ /application/index.php?path=$1 [l,qsa]

apache .htaccess mod-rewrite

No comments:

Post a Comment