Index: src/wp-admin/css/colors/_admin.scss
===================================================================
--- src/wp-admin/css/colors/_admin.scss	(revision 38654)
+++ src/wp-admin/css/colors/_admin.scss	(working copy)
@@ -324,6 +324,7 @@
 #wpadminbar li:hover .ab-item:before,
 #wpadminbar li a:focus .ab-icon:before,
 #wpadminbar li .ab-item:focus:before,
+#wpadminbar li .ab-item:focus .ab-icon:before,
 #wpadminbar li.hover .ab-icon:before,
 #wpadminbar li.hover .ab-item:before,
 #wpadminbar li:hover #adminbarsearch:before,
Index: src/wp-includes/admin-bar.php
===================================================================
--- src/wp-includes/admin-bar.php	(revision 38654)
+++ src/wp-includes/admin-bar.php	(working copy)
@@ -107,19 +107,36 @@
  * @param WP_Admin_Bar $wp_admin_bar
  */
 function wp_admin_bar_wp_menu( $wp_admin_bar ) {
-	$wp_admin_bar->add_menu( array(
+	if ( current_user_can( 'read' ) ) {
+		$about_url = self_admin_url( 'about.php' );
+	} elseif ( is_multisite() ) {
+		$about_url = get_dashboard_url( get_current_user_id(), 'about.php' );
+	} else {
+		$about_url = false;
+	}
+
+	$wp_logo_menu_args = array(
 		'id'    => 'wp-logo',
 		'title' => '<span class="ab-icon"></span><span class="screen-reader-text">' . __( 'About WordPress' ) . '</span>',
-		'href'  => self_admin_url( 'about.php' ),
-	) );
+		'href'  => $about_url,
+	);
 
-	if ( is_user_logged_in() ) {
+	// Set tabindex="0" to make sub menus accessible when no URL is available.
+	if ( ! $about_url ) {
+		$wp_logo_menu_args['meta'] = array(
+			'tabindex' => 0,
+		);
+	}
+
+	$wp_admin_bar->add_menu( $wp_logo_menu_args );
+
+	if ( $about_url ) {
 		// Add "About WordPress" link
 		$wp_admin_bar->add_menu( array(
 			'parent' => 'wp-logo',
 			'id'     => 'about',
 			'title'  => __('About WordPress'),
-			'href'   => self_admin_url( 'about.php' ),
+			'href'   => $about_url,
 		) );
 	}
 
@@ -294,10 +311,10 @@
 	}
 
 	if ( is_network_admin() ) {
-		/* translators: %s: site name */ 
+		/* translators: %s: site name */
 		$blogname = sprintf( __( 'Network Admin: %s' ), esc_html( get_current_site()->site_name ) );
 	} elseif ( is_user_admin() ) {
-		/* translators: %s: site name */ 
+		/* translators: %s: site name */
 		$blogname = sprintf( __( 'User Dashboard: %s' ), esc_html( get_current_site()->site_name ) );
 	}
 
Index: src/wp-includes/css/admin-bar.css
===================================================================
--- src/wp-includes/css/admin-bar.css	(revision 38654)
+++ src/wp-includes/css/admin-bar.css	(working copy)
@@ -294,6 +294,7 @@
 #wpadminbar li:hover .ab-item:before,
 #wpadminbar li a:focus .ab-icon:before,
 #wpadminbar li .ab-item:focus:before,
+#wpadminbar li .ab-item:focus .ab-icon:before,
 #wpadminbar li.hover .ab-icon:before,
 #wpadminbar li.hover .ab-item:before,
 #wpadminbar li:hover #adminbarsearch:before,
Index: tests/phpunit/tests/adminbar.php
===================================================================
--- tests/phpunit/tests/adminbar.php	(revision 38654)
+++ tests/phpunit/tests/adminbar.php	(working copy)
@@ -407,4 +407,30 @@
 
 		$this->assertNull( $node );
 	}
+
+	/**
+	 * @ticket 37949
+	 */
+	public function test_admin_bar_does_not_add_about_page_url() {
+		wp_set_current_user( self::$no_role_id );
+
+		set_current_screen( 'front' );
+
+		$wp_admin_bar = $this->get_standard_admin_bar();
+		$node         = $wp_admin_bar->get_node( 'wp-logo' );
+
+		$this->assertNotNull( $node );
+		$this->assertSame( false, $node->href );
+		$this->assertArrayHasKey( 'tabindex', $node->meta );
+		$this->assertSame( 0, $node->meta['tabindex'] );
+
+		wp_set_current_user( self::$editor_id );
+
+		$wp_admin_bar = $this->get_standard_admin_bar();
+		$node         = $wp_admin_bar->get_node( 'wp-logo' );
+
+		$this->assertNotNull( $node );
+		$this->assertSame( admin_url( 'about.php' ), $node->href );
+		$this->assertArrayNotHasKey( 'tabindex', $node->meta );
+	}
 }
