[wp-trac] [WordPress Trac] #45970: in IIS if web.confing <configuration has xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" attribute the WordPress creates new <configuration> section and the site craches with wrong web.config

WordPress Trac noreply at wordpress.org
Sun Jan 13 22:34:19 UTC 2019


#45970: in IIS if web.confing <configuration has
xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" attribute the
WordPress creates new <configuration> section and the site craches with
wrong web.config
---------------------------+------------------------------
 Reporter:  boychev        |       Owner:  (none)
     Type:  defect (bug)   |      Status:  new
 Priority:  normal         |   Milestone:  Awaiting Review
Component:  Rewrite Rules  |     Version:  5.0.3
 Severity:  normal         |  Resolution:
 Keywords:  needs-patch    |     Focuses:  administration
---------------------------+------------------------------
Description changed by swissspidy:

Old description:

> in IIS if web.confing <configuration has
> xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" attribute the
> WordPress creates new <configuration> section and the site craches with
> wrong web.config error (2 <configuration> sections). It happens/triggers
> by example if you are trying to change the "Permalink Settings".
>
> The code responsible for this check is located in \wp-
> admin\includes\misc.php (line 748)
>
>         // 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;
>
> The fix could be to register the namespace:
>
> $xpath->registerNamespace("x",
> "http://schemas.microsoft.com/.NetConfiguration/v2.0");
>
> and then in $xpath->query to check also for
> /x:configuration/x:system.webServer/x:rewrite/x:rules/x:rule[starts-
> with(@name,\'WordPress\')]
>
> In this way it works without problem and does not break the site.

New description:

 in IIS if web.confing <configuration has
 xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" attribute the
 WordPress creates new <configuration> section and the site craches with
 wrong web.config error (2 <configuration> sections). It happens/triggers
 by example if you are trying to change the "Permalink Settings".

 The code responsible for this check is located in \wp-
 admin\includes\misc.php (line 748)

 {{{
         // 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;
 }}}

 The fix could be to register the namespace:

 {{{
 $xpath->registerNamespace("x",
 "http://schemas.microsoft.com/.NetConfiguration/v2.0");
 }}}

 and then in `$xpath->query` to check also for
 `/x:configuration/x:system.webServer/x:rewrite/x:rules/x:rule[starts-
 with(@name,\'WordPress\')]`

 In this way it works without problem and does not break the site.

--

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/45970#comment:1>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list