From f4f6fb20192f202268cd8616ce0da194a8d89e22 Mon Sep 17 00:00:00 2001 From: markjaquith Date: Tue, 19 Aug 2008 03:21:12 +0000 Subject: [PATCH] Strip trailing spaces in URLs, redirect to canonical URL. fixes #7537 git-svn-id: http://svn.automattic.com/wordpress/trunk@8667 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/canonical.php | 9 +++++++++ wp-includes/query.php | 2 ++ 2 files changed, 11 insertions(+) diff --git a/wp-includes/canonical.php b/wp-includes/canonical.php index fe1d6e3b1..1671b4428 100644 --- a/wp-includes/canonical.php +++ b/wp-includes/canonical.php @@ -153,6 +153,15 @@ function redirect_canonical($requested_url=null, $do_redirect=true) { // trailing /index.php/ $redirect['path'] = preg_replace('|/index.php/$|', '/', $redirect['path']); + // Remove trailing spaces from the path + $redirect['path'] = preg_replace( '#(%20| )+$#', '', $redirect['path'] ); + + // Remove trailing slashes from certain terminating query string args + $redirect['query'] = preg_replace( '#((p|page_id|cat|tag)=[^&]*?)(%20| )+$#', '$1', $redirect['query'] ); + + // Clean up empty query strings + $redirect['query'] = preg_replace( '#&?(p|page_id|cat|tag)=?$#', '', $redirect['query'] ); + // strip /index.php/ when we're not using PATHINFO permalinks if ( !$wp_rewrite->using_index_permalinks() ) $redirect['path'] = str_replace('/index.php/', '/', $redirect['path']); diff --git a/wp-includes/query.php b/wp-includes/query.php index 55bb79ac2..b9c4d2963 100644 --- a/wp-includes/query.php +++ b/wp-includes/query.php @@ -524,6 +524,8 @@ class WP_Query { $qv['w'] = absint($qv['w']); $qv['m'] = absint($qv['m']); $qv['cat'] = preg_replace( '|[^0-9,-]|', '', $qv['cat'] ); // comma separated list of positive or negative integers + $qv['pagename'] = trim( $qv['pagename'] ); + $qv['name'] = trim( $qv['name'] ); if ( '' !== $qv['hour'] ) $qv['hour'] = absint($qv['hour']); if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']); if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']);