Apache mod_rewrite - Regex explanation

Discussion in 'Programming/Scripts' started by autogun, Jun 2, 2012.

  1. autogun

    autogun New Member

    Hello all,

    This one is killing me, I was banging my head for several hours and couldn't solve it until I got some external help.

    What I was trying to achieve is - Every request that is not calling index.php, robots.txt or resources folder to be rewritten to example.com/index.php/variable

    On a development server, this worked as expected:
    Code:
    RewriteEngine on
    RewriteCond $1 !^(index\.php|resources|robots\.txt)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L,QSA]
    
    But when I moved the code to my production server (running ISPConfig), the above didnt work because "?" had to be added:
    Code:
    RewriteCond $1 !^(index\.php|resources|robots\.txt)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php[B][SIZE="5"]?[/SIZE][/B]/$1 [L,QSA]
    Can maybe someone explain me, why?
    I was lost here :-(
     
  2. falko

    falko Super Moderator Howtoforge Staff

    I could imagine that it has something to do with cgi.fix_pathinfo in your php.ini. I suggest you compare the setting on both servers.
     
  3. nababan

    nababan New Member

    check your cgi exec configuration
     

Share This Page