Here’s my .htaccess file:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* ?p=$0
Which should redirect to mysite.com/?p=request only if request is not a file. But, it’s improperly matching a request like http://mysite.com/auth.php?openid.ns=http%3A%2F because of the %2F (auth.php does exist). I don’t understand why that’s screwing things up… ideas?
Edit: Guys, I put emphasis on %2F (which is a forward slash btw) because it works fine when this character isn’t in there
To be clear,
I get a 404 for this page: http://mysite.com/auth.php?openid.ns=http%3A%2F
but not this page: http://mysite.com/auth.php?openid.ns=http%3A
Just FYI, I really screwed this question up. It was a 403 error that occurred anytime %2F appeared in the URL. My app was catching this error and spitting out a deceptive 404 which might be less frightening to the end user. Really had nothing to do with .htaccess after all. More details in my answer below.
Wasn’t a
AllowEncodedSlashesproblem. It was hitting amod_securityrule that forbidhttp://in the params to prevent file injection. They whitelisted it for me.