iis7_add_rewrite_rule()
最后更新于:2021-11-27 05:57:16
iis7_add_rewrite_rule( string$filename, string$rewrite_rule)Add GeChiUI rewrite rule to the IIS 7+ configuration file.
参数
- $filename
-
(string) (Required) The file path to the configuration file
- $rewrite_rule
-
(string) (Required) The XML fragment with URL Rewrite rule
响应
(bool)
源文件
文件: gc-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.
$gechiui_rules = $xpath->query( '/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,'gechiui')] | /configuration/system.webServer/rewrite/rules/rule[starts-with(@name,'GeChiUI')]' );
if ( $gechiui_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;
}