diff --git a/src/wp-includes/canonical.php b/src/wp-includes/canonical.php index a799c5c2d3..2d776e8707 100644 --- a/src/wp-includes/canonical.php +++ b/src/wp-includes/canonical.php @@ -57,8 +57,8 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { } } - if ( is_admin() || is_search() || is_preview() || is_trackback() - || is_favicon() || ( $is_IIS && ! iis7_supports_permalinks() ) + if ( is_admin() || is_search() || is_preview() || is_trackback() || is_favicon() + || ( $is_IIS && ! iis7_supports_permalinks() ) ) { return; } @@ -655,8 +655,10 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { $redirect['path'] = trailingslashit( $redirect['path'] ); } - // Remove trailing slash for sitemaps requests. - if ( ! empty( get_query_var( 'sitemap' ) ) || ! empty( get_query_var( 'sitemap-stylesheet' ) ) ) { + // Remove trailing slash for robots.txt or sitemap requests. + if ( is_robots() + || ! empty( get_query_var( 'sitemap' ) ) || ! empty( get_query_var( 'sitemap-stylesheet' ) ) + ) { $redirect['path'] = untrailingslashit( $redirect['path'] ); } @@ -682,11 +684,6 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) { $redirect['host'] = $original['host']; } - // Even if the permalink structure ends with a slash, remove slash robots.txt. - if ( is_robots() ) { - $redirect['path'] = untrailingslashit( $redirect['path'] ); - } - $compare_original = array( $original['host'], $original['path'] ); if ( ! empty( $original['port'] ) ) { diff --git a/tests/phpunit/tests/canonical/robots.php b/tests/phpunit/tests/canonical/robots.php index e9cd45effc..c7851a062e 100644 --- a/tests/phpunit/tests/canonical/robots.php +++ b/tests/phpunit/tests/canonical/robots.php @@ -7,12 +7,8 @@ */ class Tests_Canonical_Robots extends WP_Canonical_UnitTestCase { - function setUp() { - parent::setUp(); - } - - function test_robots_url() { - $this->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' ); + public function test_remove_trailing_slashes_for_robots_requests() { + $this->set_permalink_structure( '/%postname%/' ); $this->assertCanonical( '/robots.txt', '/robots.txt' ); $this->assertCanonical( '/robots.txt/', '/robots.txt' ); } diff --git a/tests/phpunit/tests/canonical/sitemaps.php b/tests/phpunit/tests/canonical/sitemaps.php index 579247a33c..dd0bdfbdb6 100644 --- a/tests/phpunit/tests/canonical/sitemaps.php +++ b/tests/phpunit/tests/canonical/sitemaps.php @@ -7,6 +7,7 @@ * @group sitemaps */ class Tests_Canonical_Sitemaps extends WP_Canonical_UnitTestCase { + public function setUp() { parent::setUp(); $wp_sitemaps = new WP_Sitemaps(); @@ -38,4 +39,5 @@ class Tests_Canonical_Sitemaps extends WP_Canonical_UnitTestCase { $this->assertCanonical( '/wp-sitemap.xsl', '/wp-sitemap.xsl' ); $this->assertCanonical( '/wp-sitemap.xsl/', '/wp-sitemap.xsl' ); } + }