diff --git src/wp-admin/includes/schema.php src/wp-admin/includes/schema.php
index 296a699..634f9a8 100644
--- src/wp-admin/includes/schema.php
+++ src/wp-admin/includes/schema.php
@@ -397,7 +397,7 @@ function populate_options() {
 	'links_updated_date_format' => __('F j, Y g:i a'),
 	'comment_moderation' => 0,
 	'moderation_notify' => 1,
-	'permalink_structure' => '',
+	'permalink_structure' => '/%year%/%monthnum%/%day%/%postname%/',
 	'gzipcompression' => 0,
 	'hack_file' => 0,
 	'blog_charset' => 'UTF-8',
@@ -495,7 +495,6 @@ function populate_options() {
 	if ( is_multisite() ) {
 		/* translators: blog tagline */
 		$options[ 'blogdescription' ] = sprintf(__('Just another %s site'), get_current_site()->site_name );
-		$options[ 'permalink_structure' ] = '/%year%/%monthnum%/%day%/%postname%/';
 	}
 
 	// Set autoload to no for these options
diff --git src/wp-admin/includes/upgrade.php src/wp-admin/includes/upgrade.php
index b72303a..ac0f6df 100644
--- src/wp-admin/includes/upgrade.php
+++ src/wp-admin/includes/upgrade.php
@@ -87,6 +87,8 @@ function wp_install( $blog_title, $user_name, $user_email, $public, $deprecated
 
 	wp_install_defaults($user_id);
 
+	wp_install_verify_pretty_permalinks();
+
 	flush_rewrite_rules();
 
 	wp_new_blog_notification($blog_title, $guessurl, $user_id, ($email_password ? $user_password : __('The password you chose during the install.') ) );
@@ -260,6 +262,60 @@ As a new WordPress user, you should go to <a href=\"%s\">your dashboard</a> to d
 }
 endif;
 
+if ( ! function_exists( 'wp_install_verify_pretty_permalinks' ) ) :
+/**
+ * Verify pretty permalinks.
+ *
+ * This function will verify that pretty permalinks work. If pretty permalinks
+ * fail to work, the web-server will fall back to ugly permalinks by setting
+ * an empty permalink structure.
+ *
+ * @since 4.2.0
+ *
+ * @global WP_Rewrite $wp_rewrite WordPress rewrite component.
+ */
+function wp_install_verify_pretty_permalinks() {
+	global $wp_rewrite;
+
+	/*
+	 * Flush rules with the hard option to force refresh of the web-server's
+	 * rewrite config file (e.g. .htaccess or web.config).
+	 */
+	$wp_rewrite->flush_rules( true );
+
+	/*
+	 * Send a HEAD request to a random page on the site, and check whether
+	 * the 'x-pingback' header is returned as expected.
+	 */
+	$response          = wp_remote_get( site_url( '/wordpress-check-for-rewrites/' ) );
+	$x_pingback_header = wp_remote_retrieve_header( $response, 'x-pingback' );
+	$pretty_permalinks = $x_pingback_header && $x_pingback_header === get_bloginfo( 'pingback_url' );
+
+	/*
+	 * Fallback test that will send a HEAD request to the dummy post, 
+	 * and check whether the response code returns 200 as expected.
+	 */ 
+	if ( ! $pretty_permalinks ) {
+		$response          = wp_remote_head( get_permalink( 1 ) ); 
+		$pretty_permalinks = isset( $dummy_response['response']['code'] ) && 200 == $dummy_response['response']['code'];
+	}
+
+	/**
+	 * Filter the pretty permalinks verification.
+	 *
+	 * @since 4.2.0
+	 *
+	 * @param bool $pretty_permalinks Pretty permalinks verified.
+	 */
+	$pretty_permalinks = (bool) apply_filters( 'wp_install_verify_pretty_permalinks', $pretty_permalinks );
+
+	// Set an empty permalink structure to make it ugly again.
+	if ( ! $pretty_permalinks ) {
+		$wp_rewrite->set_permalink_structure('');
+	}
+}
+endif;
+
 if ( !function_exists('wp_new_blog_notification') ) :
 /**
  * {@internal Missing Short Description}}
