Title: iis7_save_url_rewrite_rules
Published: April 25, 2014
Last modified: May 20, 2026

---

# iis7_save_url_rewrite_rules(): bool|null

## In this article

 * [Description](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#description)
 * [Return](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#return)
 * [Source](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#source)
 * [Related](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#related)
 * [Changelog](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#changelog)

[ Back to top](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#wp--skip-link--target)

Updates the IIS web.config file with the current rules if it is writable.

## 󠀁[Description](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#description)󠁿

If the permalinks do not require rewrite rules then the rules are deleted from the
web.config file.

## 󠀁[Return](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#return)󠁿

 bool|null True on write success, false on failure. Null in multisite.

## 󠀁[Source](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#source)󠁿

    ```php
    function iis7_save_url_rewrite_rules() {
    	global $wp_rewrite;

    	if ( is_multisite() ) {
    		return null;
    	}

    	// Ensure get_home_path() is declared.
    	require_once ABSPATH . 'wp-admin/includes/file.php';

    	$home_path       = get_home_path();
    	$web_config_file = $home_path . 'web.config';

    	// Using win_is_writable() instead of is_writable() because of a bug in Windows PHP.
    	if ( iis7_supports_permalinks()
    		&& ( ! file_exists( $web_config_file ) && win_is_writable( $home_path ) && $wp_rewrite->using_mod_rewrite_permalinks()
    			|| win_is_writable( $web_config_file ) )
    	) {
    		$rule = $wp_rewrite->iis7_url_rewrite_rules( false );

    		if ( ! empty( $rule ) ) {
    			return iis7_add_rewrite_rule( $web_config_file, $rule );
    		} else {
    			return iis7_delete_rewrite_rule( $web_config_file );
    		}
    	}

    	return false;
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-admin/includes/misc.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/7.0/src/wp-admin/includes/misc.php#L302)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/7.0/src/wp-admin/includes/misc.php#L302-L330)

## 󠀁[Related](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#related)󠁿

| Uses | Description | 
| [iis7_add_rewrite_rule()](https://developer.wordpress.org/reference/functions/iis7_add_rewrite_rule/)`wp-admin/includes/misc.php` |

Adds WordPress rewrite rule to the IIS 7+ configuration file.

  | 
| [iis7_delete_rewrite_rule()](https://developer.wordpress.org/reference/functions/iis7_delete_rewrite_rule/)`wp-admin/includes/misc.php` |

Deletes WordPress rewrite rule from web.config file if it exists there.

  | 
| [get_home_path()](https://developer.wordpress.org/reference/functions/get_home_path/)`wp-admin/includes/file.php` |

Gets the absolute filesystem path to the root of the WordPress installation.

  | 
| [iis7_supports_permalinks()](https://developer.wordpress.org/reference/functions/iis7_supports_permalinks/)`wp-includes/functions.php` |

Checks if IIS 7+ supports pretty permalinks.

  | 
| [win_is_writable()](https://developer.wordpress.org/reference/functions/win_is_writable/)`wp-includes/functions.php` |

Workaround for Windows bug in is_writable() function

  | 
| [WP_Rewrite::iis7_url_rewrite_rules()](https://developer.wordpress.org/reference/classes/wp_rewrite/iis7_url_rewrite_rules/)`wp-includes/class-wp-rewrite.php` |

Retrieves IIS7 URL Rewrite formatted rewrite rules to write to web.config file.

  | 
| [WP_Rewrite::using_mod_rewrite_permalinks()](https://developer.wordpress.org/reference/classes/wp_rewrite/using_mod_rewrite_permalinks/)`wp-includes/class-wp-rewrite.php` |

Determines whether permalinks are being used and rewrite module is enabled.

  | 
| [is_multisite()](https://developer.wordpress.org/reference/functions/is_multisite/)`wp-includes/load.php` |

Determines whether Multisite is enabled.

  |

[Show 3 more](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#)
[Show less](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#)

| Used by | Description | 
| [WP_Rewrite::flush_rules()](https://developer.wordpress.org/reference/classes/wp_rewrite/flush_rules/)`wp-includes/class-wp-rewrite.php` |

Removes rewrite rules and then recreate rewrite rules.

  |

## 󠀁[Changelog](https://developer.wordpress.org/reference/functions/iis7_save_url_rewrite_rules/?output_format=md#changelog)󠁿

| Version | Description | 
| [2.8.0](https://developer.wordpress.org/reference/since/2.8.0/) | Introduced. |

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Ffunctions%2Fiis7_save_url_rewrite_rules%2F)
before being able to contribute a note or feedback.