[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