How to read $_GET variables with (mod rewrite powe

2019-02-23 16:43发布

问题:

Hello fellow programmers,

I'm using nice URLs the first time and I can't quite find out why I can't read my oAuth responses from my script.

So this is my setup:

.htaccess

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]

I have a script that uses googles oAuth system to log in a user. This script sends the user to the google api page where they can allow my website to read their email adress and then send the user right back to my site with lots of $_GET variables.

I tell google to send it to

http://mywebsite/login/google/response

and it does that..

The problem is that google sends the result in the normal GET format like this:

http://mywebsite/login/google/response/?openid.ns=http%3A%2F%2Fspecs.openid.ne[..]

and my script can't read it..

Is there any way to read $_GET variables when they mix with nice URLs?

回答1:

You need to add QSA (query string append) to your flags.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,PT,L]

Then your $_GET will contain the correct values.