Summery Summery
Add WordPress rewrite rule to the IIS 7+ configuration file.
Syntax Syntax
Parameters Parameters
- $filename
-
(Required) The file path to the configuration file
- $rewrite_rule
-
(Required) The XML fragment with URL Rewrite rule
Return Return
(bool)
Source Source
File: wp-admin/includes/misc.php
function iis7_add_rewrite_rule( $filename, $rewrite_rule ) { if ( ! class_exists( 'DOMDocument', false ) ) { return false; } // If configuration file does not exist then we create one. if ( ! file_exists( $filename ) ) { $fp = fopen( $filename, 'w' ); fwrite( $fp, '<configuration/>' ); fclose( $fp ); } $doc = new DOMDocument(); $doc->preserveWhiteSpace = false; if ( $doc->load( $filename ) === false ) { return false; } $xpath = new DOMXPath( $doc ); // First check if the rule already exists as in that case there is no need to re-add it. $wordpress_rules = $xpath->query( '/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')] | /configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'WordPress\')]' ); if ( $wordpress_rules->length > 0 ) { return true; } // Check the XPath to the rewrite rule and create XML nodes if they do not exist. $xmlnodes = $xpath->query( '/configuration/system.webServer/rewrite/rules' ); if ( $xmlnodes->length > 0 ) { $rules_node = $xmlnodes->item( 0 ); } else { $rules_node = $doc->createElement( 'rules' ); $xmlnodes = $xpath->query( '/configuration/system.webServer/rewrite' ); if ( $xmlnodes->length > 0 ) { $rewrite_node = $xmlnodes->item( 0 ); $rewrite_node->appendChild( $rules_node ); } else { $rewrite_node = $doc->createElement( 'rewrite' ); $rewrite_node->appendChild( $rules_node ); $xmlnodes = $xpath->query( '/configuration/system.webServer' ); if ( $xmlnodes->length > 0 ) { $system_webServer_node = $xmlnodes->item( 0 ); $system_webServer_node->appendChild( $rewrite_node ); } else { $system_webServer_node = $doc->createElement( 'system.webServer' ); $system_webServer_node->appendChild( $rewrite_node ); $xmlnodes = $xpath->query( '/configuration' ); if ( $xmlnodes->length > 0 ) { $config_node = $xmlnodes->item( 0 ); $config_node->appendChild( $system_webServer_node ); } else { $config_node = $doc->createElement( 'configuration' ); $doc->appendChild( $config_node ); $config_node->appendChild( $system_webServer_node ); } } } } $rule_fragment = $doc->createDocumentFragment(); $rule_fragment->appendXML( $rewrite_rule ); $rules_node->appendChild( $rule_fragment ); $doc->encoding = 'UTF-8'; $doc->formatOutput = true; saveDomDocument( $doc, $filename ); return true; }
Advertisement
Changelog Changelog
Version | Description |
---|---|
2.8.0 | Introduced. |