Capture rewrite for every after question mark

Hello,

I have found the following while searching it is the only one i can
get working with my config setup
to send a 301 permanently if “/index.php” is directly accessed.

if ($request_uri ~* ^(/home(/index)?|/index(.php)?)/?$)
{
rewrite ^(.*)$ / permanent;
}

GET http://www.example.com/index.php 301 Moved Permanently
GET http://www.example.com/ 200 OK


above works as expected.

But, now if i have the following results as 200 OK as expected.

http://www.example.com/index.php?randomvalue 200 OK

So how do you rewrite that if there is a question mark and or value
that follows “/index.php?” then returns 301.

GET http://www.example.com/index.php?randomvalue 301 Moved
Permanently

GET http://www.example.com/ 200 OK

Posted at Nginx Forum:

On 30 Nov 2011 17h06 WET, [email protected] wrote:

}
http://www.example.com/index.php?randomvalue 200 OK

So how do you rewrite that if there is a question mark and or value
that follows “/index.php?” then returns 301.

GET http://www.example.com/index.php?randomvalue 301 Moved
Permanently

GET http://www.example.com/ 200 OK

Try:

location = /index.php {
return 301 /;
}

— appa

On 30 Nov 2011 17h19 WET, [email protected] wrote:

Thanks for suggestion appa, i apply what said to try and results in
a “Redirection Loop”.

Hello,

I have found the following while searching it is the only one i can
get working with my config setup
to send a 301 permanently if “/index.php” is directly accessed.

Remove/comment out the if below and try:

http {

map $redirect_direct_access $request_uri {
default 0;
~/index(.php)? 1;
~/home(/index)? 1;
}
}

server {
server_name www.example.com;

root /path/to/root;

location / {
    if ($redirect_direct_access) {
       return 301 /;
    }
}

}

if ($request_uri ~* ^(/home(/index)?|/index(.php)?)/?$)
{
rewrite ^(.*)$ / permanent;
}

— appa

Thanks for suggestion appa, i apply what said to try and results in a
“Redirection Loop”.

}
http://www.example.com/index.php?randomvalue 200 OK

So how do you rewrite that if there is a question mark and or value
that follows “/index.php?” then returns 301.

GET http://www.example.com/index.php?randomvalue 301 Moved
Permanently

GET http://www.example.com/ 200 OK

Try:

location = /index.php {
return 301 /;
}

Update,

I am using

if ($request_uri ~* ^/index.php(.)$){
rewrite ^(.
)$ / permanent;
}

   The above resuls as which dose the 301 moved permanently with the

exception of retaining the the question and the the value.

I guess from a search engines point of view its see’s the 301 Moved
Permanently so in that case it ok, but it would be nice to not retain
the “?randomvalue”.

   http://www.example.com/index.php?randomvalue  301 Moved

Permanently
Example Domain 200 OK

Posted at Nginx Forum:

Thanks for suggestion appa, i apply what said to try and results in a
“Redirection Loop”.

}
http://www.example.com/index.php?randomvalue 200 OK

So how do you rewrite that if there is a question mark and or value
that follows “/index.php?” then returns 301.

GET http://www.example.com/index.php?randomvalue 301 Moved
Permanently

GET http://www.example.com/ 200 OK

Try:

location = /index.php {
return 301 /;
}

Posted at Nginx Forum:

token Wrote:

GET http://www.example.com/ 200 OK

Try:
rewrite ^(.*)$ / permanent;

http://www.example.com/index.php?randomvalue 301
Moved Permanently
Example Domain 200 OK

Final Update, Resolved

if ($request_uri ~* ^/index.php(.)$){
rewrite ^(.
)$ /? permanent;
}

Seems to work now

Posted at Nginx Forum: