Changeset 41991
- Timestamp:
- 10/24/2017 02:17:22 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/canonical.php
r41257 r41991 393 393 $redirect['path'] = preg_replace('|/' . preg_quote( $wp_rewrite->index, '|' ) . '/*?$|', '/', $redirect['path']); 394 394 395 // Remove trailing spaces from the path 396 $redirect['path'] = preg_replace( '#(%20| )+$#', '', $redirect['path'] ); 395 $punctuation_pattern = implode( '|', array_map( 'preg_quote', array( 396 ' ', '%20', // space 397 '!', '%21', // exclamation mark 398 '"', '%22', // double quote 399 "'", '%27', // single quote 400 '(', '%28', // opening bracket 401 ')', '%29', // closing bracket 402 ',', '%2C', // comma 403 '.', '%2E', // period 404 ';', '%3B', // semicolon 405 '{', '%7B', // opening curly bracket 406 '}', '%7D', // closing curly bracket 407 '%E2%80%9C', // opening curly quote 408 '%E2%80%9D', // closing curly quote 409 ) ) ); 410 411 // Remove trailing spaces and end punctuation from the path. 412 $redirect['path'] = preg_replace( "#($punctuation_pattern)+$#", '', $redirect['path'] ); 397 413 398 414 if ( !empty( $redirect['query'] ) ) { 399 // Remove trailing spaces from certain terminating query string args400 $redirect['query'] = preg_replace( '#((p|page_id|cat|tag)=[^&]*?)(%20| )+$#', '$1', $redirect['query'] );415 // Remove trailing spaces and end punctuation from certain terminating query string args. 416 $redirect['query'] = preg_replace( "#((p|page_id|cat|tag)=[^&]*?)($punctuation_pattern)+$#", '$1', $redirect['query'] ); 401 417 402 418 // Clean up empty query strings -
trunk/tests/phpunit/tests/canonical/noRewrite.php
r40661 r41991 47 47 array( '/?post_type=page&page_id=1', '/?p=1' ), 48 48 49 array( '/?p=358 ', array('url' => '/?p=358', 'qv' => array('p' => '358') ) ), // Trailing spaces 50 array( '/?p=358%20', array('url' => '/?p=358', 'qv' => array('p' => '358') ) ), 49 // Trailing spaces and punctuation in query string args. 50 array( '/?p=358 ', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // space 51 array( '/?p=358%20', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded space 52 array( '/?p=358!', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // exclamation mark 53 array( '/?p=358%21', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded exclamation mark 54 array( '/?p=358"', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // double quote 55 array( '/?p=358%22', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded double quote 56 array( '/?p=358\'', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // single quote 57 array( '/?p=358%27', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded single quote 58 array( '/?p=358(', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // opening bracket 59 array( '/?p=358%28', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded opening bracket 60 array( '/?p=358)', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // closing bracket 61 array( '/?p=358%29', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded closing bracket 62 array( '/?p=358,', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // comma 63 array( '/?p=358%2C', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded comma 64 array( '/?p=358.', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // period 65 array( '/?p=358%2E', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded period 66 array( '/?p=358;', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // semicolon 67 array( '/?p=358%3B', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded semicolon 68 array( '/?p=358{', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // opening curly bracket 69 array( '/?p=358%7B', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded opening curly bracket 70 array( '/?p=358}', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // closing curly bracket 71 array( '/?p=358%7D', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded closing curly bracket 72 array( '/?p=358%E2%80%9C', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded opening curly quote 73 array( '/?p=358%E2%80%9D', array( 'url' => '/?p=358', 'qv' => array( 'p' => '358' ) ), 20383 ), // encoded closing curly quote 74 75 // Trailing spaces and punctuation in permalinks. 76 array( '/page/2/ ', '/page/2/', 20383 ), // space 77 array( '/page/2/%20', '/page/2/', 20383 ), // encoded space 78 array( '/page/2/!', '/page/2/', 20383 ), // exclamation mark 79 array( '/page/2/%21', '/page/2/', 20383 ), // encoded exclamation mark 80 array( '/page/2/"', '/page/2/', 20383 ), // double quote 81 array( '/page/2/%22', '/page/2/', 20383 ), // encoded double quote 82 array( '/page/2/\'', '/page/2/', 20383 ), // single quote 83 array( '/page/2/%27', '/page/2/', 20383 ), // encoded single quote 84 array( '/page/2/(', '/page/2/', 20383 ), // opening bracket 85 array( '/page/2/%28', '/page/2/', 20383 ), // encoded opening bracket 86 array( '/page/2/)', '/page/2/', 20383 ), // closing bracket 87 array( '/page/2/%29', '/page/2/', 20383 ), // encoded closing bracket 88 array( '/page/2/,', '/page/2/', 20383 ), // comma 89 array( '/page/2/%2C', '/page/2/', 20383 ), // encoded comma 90 array( '/page/2/.', '/page/2/', 20383 ), // period 91 array( '/page/2/%2E', '/page/2/', 20383 ), // encoded period 92 array( '/page/2/;', '/page/2/', 20383 ), // semicolon 93 array( '/page/2/%3B', '/page/2/', 20383 ), // encoded semicolon 94 array( '/page/2/{', '/page/2/', 20383 ), // opening curly bracket 95 array( '/page/2/%7B', '/page/2/', 20383 ), // encoded opening curly bracket 96 array( '/page/2/}', '/page/2/', 20383 ), // closing curly bracket 97 array( '/page/2/%7D', '/page/2/', 20383 ), // encoded closing curly bracket 98 array( '/page/2/%E2%80%9C', '/page/2/', 20383 ), // encoded opening curly quote 99 array( '/page/2/%E2%80%9D', '/page/2/', 20383 ), // encoded closing curly quote 51 100 52 101 array( '/?page_id=1', '/?p=1' ), // redirect page_id to p (should cover page_id|p|attachment_id to one another … … 55 104 array( '/?feed=rss2&p=1', '/?feed=rss2&p=1', 21841 ), 56 105 array( '/?feed=rss&p=1', '/?feed=rss2&p=1', 24623 ), 57 58 106 ); 59 107 }
Note: See TracChangeset
for help on using the changeset viewer.