update_mod_rewrite_rules() │ WPSCache 1.0
No Hooks.
Return
null
. Nothing (null).
Usage
update_mod_rewrite_rules( $add_rules );
- $add_rules **
- -
Default: true
update_mod_rewrite_rules() update mod rewrite rules code WPSCache 1.12.4
function update_mod_rewrite_rules( $add_rules = true ) { global $cache_path, $update_mod_rewrite_rules_error; $update_mod_rewrite_rules_error = false; if ( defined( "DO_NOT_UPDATE_HTACCESS" ) ) { $update_mod_rewrite_rules_error = ".htaccess update disabled by admin: DO_NOT_UPDATE_HTACCESS defined"; return false; } if ( ! function_exists( 'get_home_path' ) ) { include_once( ABSPATH . 'wp-admin/includes/file.php' ); // get_home_path() include_once( ABSPATH . 'wp-admin/includes/misc.php' ); // extract_from_markers() } $home_path = trailingslashit( get_home_path() ); $home_root = parse_url( get_bloginfo( 'url' ) ); $home_root = isset( $home_root[ 'path' ] ) ? trailingslashit( $home_root[ 'path' ] ) : '/'; if ( $home_root == '/' && $home_path != $_SERVER[ 'DOCUMENT_ROOT' ] ) { $home_path = $_SERVER[ 'DOCUMENT_ROOT' ]; } elseif ( $home_root != '/' && $home_path != str_replace( '//', '/', $_SERVER[ 'DOCUMENT_ROOT' ] . $home_root ) && is_dir( $_SERVER[ 'DOCUMENT_ROOT' ] . $home_root ) ) { $home_path = str_replace( '//', '/', $_SERVER[ 'DOCUMENT_ROOT' ] . $home_root ); } $home_path = trailingslashit( $home_path ); if ( ! file_exists( $home_path . ".htaccess" ) ) { $update_mod_rewrite_rules_error = ".htaccess not found: {$home_path}.htaccess"; return false; } $generated_rules = wpsc_get_htaccess_info(); $existing_rules = implode( "\n", extract_from_markers( $home_path . '.htaccess', 'WPSuperCache' ) ); $rules = $add_rules ? $generated_rules[ 'rules' ] : ''; if ( $existing_rules == $rules ) { $update_mod_rewrite_rules_error = "rules have not changed"; return true; } if ( $generated_rules[ 'wprules' ] == '' ) { $update_mod_rewrite_rules_error = "WordPress rules empty"; return false; } if ( empty( $rules ) ) { return insert_with_markers( $home_path . '.htaccess', 'WPSuperCache', array() ); } $url = trailingslashit( get_bloginfo( 'url' ) ); $original_page = wp_remote_get( $url, array( 'timeout' => 60, 'blocking' => true ) ); if ( is_wp_error( $original_page ) ) { $update_mod_rewrite_rules_error = "Problem loading page"; return false; } $backup_filename = $cache_path . 'htaccess.' . mt_rand() . ".php"; $backup_file_contents = file_get_contents( $home_path . '.htaccess' ); file_put_contents( $backup_filename, "<" . "?php die(); ?" . ">" . $backup_file_contents ); $existing_gzip_rules = implode( "\n", extract_from_markers( $cache_path . '.htaccess', 'supercache' ) ); if ( $existing_gzip_rules != $generated_rules[ 'gziprules' ] ) { insert_with_markers( $cache_path . '.htaccess', 'supercache', explode( "\n", $generated_rules[ 'gziprules' ] ) ); } $wprules = extract_from_markers( $home_path . '.htaccess', 'WordPress' ); wpsc_remove_marker( $home_path . '.htaccess', 'WordPress' ); // remove original WP rules so SuperCache rules go on top if ( insert_with_markers( $home_path . '.htaccess', 'WPSuperCache', explode( "\n", $rules ) ) && insert_with_markers( $home_path . '.htaccess', 'WordPress', $wprules ) ) { $new_page = wp_remote_get( $url, array( 'timeout' => 60, 'blocking' => true ) ); $restore_backup = false; if ( is_wp_error( $new_page ) ) { $restore_backup = true; $update_mod_rewrite_rules_error = "Error testing page with new .htaccess rules: " . $new_page->get_error_message() . "."; wp_cache_debug( 'update_mod_rewrite_rules: failed to update rules. error fetching second page: ' . $new_page->get_error_message() ); } elseif ( $new_page[ 'body' ] != $original_page[ 'body' ] ) { $restore_backup = true; $update_mod_rewrite_rules_error = "Page test failed as pages did not match with new .htaccess rules."; wp_cache_debug( 'update_mod_rewrite_rules: failed to update rules. page test failed as pages did not match. Files dumped in ' . $cache_path . ' for inspection.' ); wp_cache_debug( 'update_mod_rewrite_rules: original page: 1-' . md5( $original_page[ 'body' ] ) . '.txt' ); wp_cache_debug( 'update_mod_rewrite_rules: new page: 1-' . md5( $new_page[ 'body' ] ) . '.txt' ); file_put_contents( $cache_path . '1-' . md5( $original_page[ 'body' ] ) . '.txt', $original_page[ 'body' ] ); file_put_contents( $cache_path . '2-' . md5( $new_page[ 'body' ] ) . '.txt', $new_page[ 'body' ] ); } if ( $restore_backup ) { global $wp_cache_debug; file_put_contents( $home_path . '.htaccess', $backup_file_contents ); unlink( $backup_filename ); if ( $wp_cache_debug ) { $update_mod_rewrite_rules_error .= "<br />See debug log for further details"; } else { $update_mod_rewrite_rules_error .= "<br />Enable debug log on Debugging page for further details and try again"; } return false; } } else { file_put_contents( $home_path . '.htaccess', $backup_file_contents ); unlink( $backup_filename ); $update_mod_rewrite_rules_error = "problem inserting rules in .htaccess and original .htaccess restored"; return false; } return true; }