$obj = $wp_query->get_queried_object();
- if ( $term_count <= 1 && !empty($obj->term_id) && ( $tax_url = get_term_link((int)$obj->term_id, $obj->taxonomy) ) && !is_wp_error($tax_url) ) {
-
+ if ( $term_count <= 1 && !empty($obj->term_id) && ( $tax_url = get_term_link((int)$obj->term_id, $obj->taxonomy) )
+ && !is_wp_error($tax_url) && $redirect['query'] ) {
if ( is_category() ) {
$redirect['query'] = remove_query_arg( array( 'category_name', 'category', 'cat'), $redirect['query']);
} elseif ( is_tag() ) {
if ( !$redirect_url || $redirect_url == $requested_url )
return false;
+
+ // Hex encoded octets are case-insensitive.
+ if ( false !== strpos($requested_url, '%') ) {
+ if ( !function_exists('lowercase_octets') ) {
+ function lowercase_octets($matches) {
+ return strtolower( $matches[0] );
+ }
+ }
+ $requested_url = preg_replace_callback('|%[a-fA-F0-9][a-fA-F0-9]|', 'lowercase_octets', $requested_url);
+ }
// Note that you can use the "redirect_canonical" filter to cancel a canonical redirect for whatever reason by returning FALSE
$redirect_url = apply_filters('redirect_canonical', $redirect_url, $requested_url);