diff --git a/wp-admin/options-permalink.php b/wp-admin/options-permalink.php index c492e2c00e..28395e9651 100644 --- a/wp-admin/options-permalink.php +++ b/wp-admin/options-permalink.php @@ -117,9 +117,10 @@ if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) ) { exit; } -$permalink_structure = get_option('permalink_structure'); -$category_base = get_option('category_base'); -$tag_base = get_option( 'tag_base' ); +$permalink_structure = get_option( 'permalink_structure' ); +$category_base = get_option( 'category_base' ); +$tag_base = get_option( 'tag_base' ); +$update_required = false; if ( $iis7_permalinks ) { if ( ( ! file_exists($home_path . 'web.config') && win_is_writable($home_path) ) || win_is_writable($home_path . 'web.config') ) @@ -129,10 +130,14 @@ if ( $iis7_permalinks ) { } elseif ( $is_nginx ) { $writable = false; } else { - if ( ( ! file_exists($home_path . '.htaccess') && is_writable($home_path) ) || is_writable($home_path . '.htaccess') ) + if ( ( ! file_exists( $home_path . '.htaccess' ) && is_writable( $home_path ) ) || is_writable( $home_path . '.htaccess' ) ) { $writable = true; - else + } else { $writable = false; + $existing_rules = array_filter( extract_from_markers( $home_path . '.htaccess', 'WordPress' ) ); + $new_rules = array_filter( explode( "\n", $wp_rewrite->mod_rewrite_rules() ) ); + $update_required = ( $new_rules !== $existing_rules ); + } } if ( $wp_rewrite->using_index_permalinks() ) @@ -157,10 +162,11 @@ if ( ! is_multisite() ) { } elseif ( $is_nginx ) { _e('Permalink structure updated.'); } else { - if ( $permalink_structure && ! $usingpi && ! $writable ) + if ( $permalink_structure && ! $usingpi && ! $writable && $update_required ) { _e('You should update your .htaccess now.'); - else + } else { _e('Permalink structure updated.'); + } } } else { _e('Permalink structure updated.'); @@ -273,7 +279,7 @@ printf( __('If you like, you may enter custom structures for your category and t + if ( $permalink_structure && ! $usingpi && ! $writable && $update_required ) : ?>

.htaccess file were writable, we could do this automatically, but it isn’t so these are the mod_rewrite rules you should have in your .htaccess file. Click in the field and press CTRL + a to select all.') ?>