Canonical: Move trailing slash handling for robots.txt and sitemaps to a single condition.

Give the unit test a more descriptive name.

Follow-up to [48153], [48155].

See #48025.

git-svn-id: https://develop.svn.wordpress.org/trunk@48166 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2020-06-25 11:39:23 +00:00
parent 72c7f2c41c
commit de36eb3326
3 changed files with 10 additions and 15 deletions

View File

@ -57,8 +57,8 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
} }
} }
if ( is_admin() || is_search() || is_preview() || is_trackback() if ( is_admin() || is_search() || is_preview() || is_trackback() || is_favicon()
|| is_favicon() || ( $is_IIS && ! iis7_supports_permalinks() ) || ( $is_IIS && ! iis7_supports_permalinks() )
) { ) {
return; return;
} }
@ -655,8 +655,10 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
$redirect['path'] = trailingslashit( $redirect['path'] ); $redirect['path'] = trailingslashit( $redirect['path'] );
} }
// Remove trailing slash for sitemaps requests. // Remove trailing slash for robots.txt or sitemap requests.
if ( ! empty( get_query_var( 'sitemap' ) ) || ! empty( get_query_var( 'sitemap-stylesheet' ) ) ) { if ( is_robots()
|| ! empty( get_query_var( 'sitemap' ) ) || ! empty( get_query_var( 'sitemap-stylesheet' ) )
) {
$redirect['path'] = untrailingslashit( $redirect['path'] ); $redirect['path'] = untrailingslashit( $redirect['path'] );
} }
@ -682,11 +684,6 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
$redirect['host'] = $original['host']; $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'] ); $compare_original = array( $original['host'], $original['path'] );
if ( ! empty( $original['port'] ) ) { if ( ! empty( $original['port'] ) ) {

View File

@ -7,12 +7,8 @@
*/ */
class Tests_Canonical_Robots extends WP_Canonical_UnitTestCase { class Tests_Canonical_Robots extends WP_Canonical_UnitTestCase {
function setUp() { public function test_remove_trailing_slashes_for_robots_requests() {
parent::setUp(); $this->set_permalink_structure( '/%postname%/' );
}
function test_robots_url() {
$this->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' );
$this->assertCanonical( '/robots.txt', '/robots.txt' ); $this->assertCanonical( '/robots.txt', '/robots.txt' );
$this->assertCanonical( '/robots.txt/', '/robots.txt' ); $this->assertCanonical( '/robots.txt/', '/robots.txt' );
} }

View File

@ -7,6 +7,7 @@
* @group sitemaps * @group sitemaps
*/ */
class Tests_Canonical_Sitemaps extends WP_Canonical_UnitTestCase { class Tests_Canonical_Sitemaps extends WP_Canonical_UnitTestCase {
public function setUp() { public function setUp() {
parent::setUp(); parent::setUp();
$wp_sitemaps = new WP_Sitemaps(); $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' );
$this->assertCanonical( '/wp-sitemap.xsl/', '/wp-sitemap.xsl' ); $this->assertCanonical( '/wp-sitemap.xsl/', '/wp-sitemap.xsl' );
} }
} }