diff --git a/src/wp-includes/canonical.php b/src/wp-includes/canonical.php
index 12fdd1a..98a4e3c 100644
--- a/src/wp-includes/canonical.php
+++ b/src/wp-includes/canonical.php
@@ -374,6 +374,40 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
 		}
 	}

+	/*
+	 * Enhancement: Support redirecting query vars like ?pagename=blog,
+	 * ?author_name=admin, and ?post_format=image to their canonical permalink forms.
+	 */
+
+	if ( isset( $_GET['pagename'] ) && ! empty( $_GET['pagename'] ) ) {
+		$page = get_page_by_path( sanitize_title( $_GET['pagename'] ) );
+		if ( $page && ! is_wp_error( $page ) ) {
+			$redirect_url = get_permalink( $page->ID );
+			if ( $redirect_url && $redirect_url !== $requested_url ) {
+				wp_redirect( $redirect_url, 301 );
+				exit;
+			}
+		}
+	}
+
+	if ( isset( $_GET['author_name'] ) && ! empty( $_GET['author_name'] ) ) {
+		$user = get_user_by( 'slug', sanitize_title( $_GET['author_name'] ) );
+		if ( $user && ! is_wp_error( $user ) ) {
+			$redirect_url = get_author_posts_url( $user->ID );
+			if ( $redirect_url && $redirect_url !== $requested_url ) {
+				wp_redirect( $redirect_url, 301 );
+				exit;
+			}
+		}
+	}
+
+	if ( isset( $_GET['post_format'] ) && ! empty( $_GET['post_format'] ) ) {
+		$term = get_term_by( 'slug', sanitize_title( $_GET['post_format'] ), 'post_format' );
+		if ( $term && ! is_wp_error( $term ) ) {
+			$redirect_url = get_term_link( $term );
+			if ( $redirect_url && $redirect_url !== $requested_url ) {
+				wp_redirect( $redirect_url, 301 );
+				exit;
+			}
+		}
+	}
+
 	// Canonical redirect was not applicable
 	return false;
 }
