函数文档

iis7_delete_rewrite_rule()

💡 云策文档标注

概述

iis7_delete_rewrite_rule() 函数用于从 IIS 的 web.config 文件中删除 WordPress 重写规则。它检查文件是否存在,使用 DOMDocument 解析 XML,并移除以 'wordpress' 或 'WordPress' 开头的规则节点。

关键要点

  • 函数接受一个必需参数 $filename,指定配置文件名,返回布尔值表示操作成功与否。
  • 如果配置文件不存在,函数直接返回 true,因为无需删除规则。
  • 依赖 DOMDocument 类,若不可用则返回 false。
  • 使用 DOMXPath 查询匹配规则,删除后通过 saveDomDocument() 保存文件。

代码示例

function iis7_delete_rewrite_rule( $filename ) {
    // If configuration file does not exist then rules also do not exist, so there is nothing to delete.
    if ( ! file_exists( $filename ) ) {
        return true;
    }

    if ( ! class_exists( 'DOMDocument', false ) ) {
        return false;
    }

    $doc                     = new DOMDocument();
    $doc->preserveWhiteSpace = false;

    if ( $doc->load( $filename ) === false ) {
        return false;
    }

    $xpath = new DOMXPath( $doc );
    $rules = $xpath->query( '/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,'wordpress')] | /configuration/system.webServer/rewrite/rules/rule[starts-with(@name,'WordPress')]' );

    if ( $rules->length > 0 ) {
        $child  = $rules->item( 0 );
        $parent = $child->parentNode;
        $parent->removeChild( $child );
        $doc->formatOutput = true;
        saveDomDocument( $doc, $filename );
    }

    return true;
}

注意事项

  • 函数自 WordPress 2.8.0 版本引入,主要用于 IIS 服务器环境。
  • 相关函数包括 saveDomDocument() 和 iis7_save_url_rewrite_rules(),用于保存 XML 文档和更新重写规则。

📄 原文内容

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

Parameters

$filenamestringrequired
Name of the configuration file.

Return

bool

Source

function iis7_delete_rewrite_rule( $filename ) {
	// If configuration file does not exist then rules also do not exist, so there is nothing to delete.
	if ( ! file_exists( $filename ) ) {
		return true;
	}

	if ( ! class_exists( 'DOMDocument', false ) ) {
		return false;
	}

	$doc                     = new DOMDocument();
	$doc->preserveWhiteSpace = false;

	if ( $doc->load( $filename ) === false ) {
		return false;
	}

	$xpath = new DOMXPath( $doc );
	$rules = $xpath->query( '/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,'wordpress')] | /configuration/system.webServer/rewrite/rules/rule[starts-with(@name,'WordPress')]' );

	if ( $rules->length > 0 ) {
		$child  = $rules->item( 0 );
		$parent = $child->parentNode;
		$parent->removeChild( $child );
		$doc->formatOutput = true;
		saveDomDocument( $doc, $filename );
	}

	return true;
}

Changelog

Version Description
2.8.0 Introduced.