[wp-trac] [WordPress Trac] #41712: canonical infinite redirect bug
WordPress Trac
noreply at wordpress.org
Wed Aug 23 15:27:57 UTC 2017
#41712: canonical infinite redirect bug
--------------------------+-----------------------------
Reporter: yprince | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: General | Version:
Severity: normal | Keywords:
Focuses: |
--------------------------+-----------------------------
I had an infinite redirection problem caused by "redirect_canonical" (wp-
includes\canonical.php)
I have a query string parameter ex:
"http://mysite.com/mypage/?q=test%2C+test" and it was redirected infinitly
to itself because of:
{{{#!php
<?php
// yes, again -- in case the filter aborted the request
if ( ! $redirect_url || strip_fragment_from_url( $redirect_url )
== strip_fragment_from_url( $requested_url ) ) {
return;
}
}}}
my $requested_url was in lowercase
"http://mysite.com/mypage/?q=test%2c+test" because of:
{{{#!php
<?php
$requested_url = preg_replace_callback('|%[a-fA-F0-9][a-fA-F0-9]|',
'lowercase_octets', $requested_url);
}}}
but my $redirect_url was "http://mysite.com/mypage/?q=test%2C+test"
so the both url was different because of the "%2c" vs "%2C"
I solved it by adding:
{{{#!php
<?php
add_filter( 'redirect_canonical', 'my_redirect_canonical', 10, 1 );
function my_redirect_canonical($redirect_url){
$redirect_url = preg_replace_callback('|%[a-fA-F0-9][a-fA-F0-9]|',
'lowercase_octets', $redirect_url);
return $redirect_url;
}
}}}
--
Ticket URL: <https://core.trac.wordpress.org/ticket/41712>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list