我有一个服务器(带iis7.5的w2008)和一个有许多不同WP安装的域。
以下所有内容代表WP安装。
x.com/stuff
x.com/programs/recentx.com/programs/asiax.com/sandbox/1x.com/sandbox/2x.com/requests我已经将x.com重定向到y.com一段时间了-只有WP子网站在使用,但希望取消重定向并开始使用根url。然而,当我在根目录(inetpub/wwwroot)中安装WP(fresh 3.8.1)时,它基本上破坏了我拥有的每个网站。我遇到了各种各样的问题,从网站不上线,到永久链接不工作,再到无法获取主题文件。
我试着把网络拿出来。每次安装时都会出现配置文件和未出现的配置文件,但永久链接当然不起作用。
我需要执行哪些步骤才能使根目录正常工作,而不会终止其余的WP安装?
在一个只使用默认permalink的旧WP安装上,当我在WP admin中将其设置为默认时,它会更改web。配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules/>
</rewrite>
</system.webServer>
</configuration>
当我在WP admin中将同一个站点更改为年/月/名称时,它会设置web。为此配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<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>
</configuration>
这会把网站搞得一团糟(以前这样做是可行的)。该网站看起来没有css或正确的路径,加上任何需要重写的链接都不起作用。
Also note that I do change the name of the rule so it doesn\'t conflict with other wordpress sites. So this one is wordpress_22 - I just copied what WP actually creates.然而,在上周安装的一个WP上,在同一台服务器上,使用年/月/postname只剩下一个目录,我就得到了一个web。配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="wordpress" patternSyntax="Wildcard">
<match url="*"/>
<conditions>
<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>
</configuration>
这个网站运行得非常好。我可以用任何方式改变永久链接,它们都可以工作。。。给我猜个谜语。
最合适的回答,由SO网友:Otto 整理而成
在每个web中。每个目录的配置文件如下所示:
<rewrite>
<rules>
<rule name="wordpress" stopProcessing="true">
<match url="*" />
<conditions>
<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>
对于每个子站点,您需要更改规则名称并添加一个clear元素。示例:
<rewrite>
<rules>
<clear />
<rule name="SOME DIFFERENT NAME HERE" stopProcessing="true">
<match url="*" />
<conditions>
<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>
WordPress不会为您这样做,因为它不知道您系统上的任何其他站点,并且IIS配置非常复杂。正如我在评论中所解释的,WordPress目前对IIS的支持非常有限。如果您有单站点配置以外的任何类型的系统,那么您需要自己编写这些配置文件,为此,您需要找到一位了解IIS的专家,而不一定是专门了解WordPress的专家。