我有一个Wordpress网站安装在IIS中,它工作正常。在我拥有的子文件夹和ASP上。NET应用程序,也可以正常工作。
Wordpress URL重写会导致子文件夹中的应用程序出现一系列问题。解决方案很简单:我的根网站。配置文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
<location path="." inheritInChildApplications="false">
<system.webServer>
<rewrite>
<rules>
<rule name="wordpress" enabled="true" patternSyntax="Wildcard">
<match url="*" negate="false"/>
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
</conditions>
<action type="Rewrite" url="index.php"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</location>
</configuration>
关键在于:
inheritInChildApplications="false"
内部
<location>
标签这将阻止重写规则传播到子ASP。NET应用程序,这会造成危害,正如我之前解释的那样。
到目前为止,一切顺利。
但想象一下,我只需进入Permalinks配置页面,该页面位于以下路径中:wp-admin/options-permalink.php
.
在这种情况下,可怕的事情发生了:Wordpress自动读取我的web配置文件,可能正在搜索标记<system.webServer>
在<configuration>
标签但它不在那里,因为我已经包装好了<system.webServer>
在<location>
标签
由于在那里找不到重写规则,Wordpress只需添加<system.webServer>
再次阻塞,使其重复,从而保存web。配置文件。
有两个<system.webServer>
web上的块。配置文件导致网站严重崩溃,并显示500条错误消息。服务器日志会告诉我Config section \'system.webServer/rewrite/rules\' already defined. Sections must only appear once per config file
.
请注意,我不必在Permalinks配置页面上点击“保存更改”,这样悲剧就会发生,我所要做的就是进入页面。Wordpress将执行所有检查并重新保存web。自行配置文件。
虽然我不打算进入那个配置页面,但我认为一年后,当网站投入生产时,意外进入该页面将引发这些可怕的500个错误,这是一种风险。
所以在写了这么长的文章之后,我的问题是:你知道有什么方法或配置可以阻止Wordpress自动保存web吗。当我进入Permalinks配置页面时,是否再次配置文件?非常感谢。