【问题标题】:web.config not working with WordPress permalinks in sub folderweb.config 不适用于子文件夹中的 WordPress 永久链接
【发布时间】:2017-10-13 11:34:23
【问题描述】:

我在根文件夹中的 IIS 服务器上安装了 WP。这适用于漂亮的永久链接。

/development 上还有另一个 wordpress 安装,它使用以下 web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
            <rule name="WordPress1" 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>
    <staticContent>
      <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00"/>
      <remove fileExtension=".woff"/>
      <remove fileExtension=".woff2"/>
      <mimeMap fileExtension=".woff" mimeType="application/x-font-woff"/>
      <mimeMap fileExtension=".woff2" mimeType="application/font-woff2"/>
    </staticContent>

  </system.webServer>
</configuration>

但是,漂亮的永久链接在此站点的子文件夹中不起作用

主页在这个子文件夹和选择普通永久链接时有效

有什么想法吗?

【问题讨论】:

    标签: wordpress iis web-config


    【解决方案1】:

    正如 pee2pee 所说,答案是将该行放在代码中。

    <remove name="YourRuleName"/>
    

    为此,您必须首先查看根目录的 web.config 文件并查找此行。

    <rule name = "YourRuleName" patternSyntax = "Wildcard">
    

    然后复制您的目录或子文件夹的 web.config 文件中的行,将“YourRuleName”更改为您在第一个标记上方的根目录的 web.config 文件中找到的名称。

    然后,您的子文件夹的 web.config 文件应该是这样的

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
        <rewrite>
          <rules>
                <remove name="YourRuleName"/>
                <rule name="YourSubFolderRuleName" 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>
    

    我希望它对我有帮助。

    【讨论】:

    • 这对我有帮助!谢谢!
    【解决方案2】:

    确保根文件夹(服务于主站点)和子文件夹(辅助站点或 /shop 所在的位置)各有一个唯一的 web.config 文件。

    在您的子文件夹的 web.config 文件中,您需要删除在根文件夹中设置的规则。在我们的例子中,根文件夹中设置的 WordPress 重写规则称为“PrimarySite”,因此在子文件夹的 web.config 中我们有:

    <remove name="PrimarySite"/>
    

    这就是让事情运转起来所需要的一切。很简单吧?

    【讨论】:

      【解决方案3】:

      从 WP 5.9 开始(但我确信可以追溯到多年前和版本),无需手动添加 web.config。

      如果 IIS 重写模块已安装(这是先决条件),当您修改设置/永久链接时,WP 会自动将 web.config 发送到您网站的根目录。

      它甚至会向 GUI 写入一条警告消息,以撤销 web.config 的写入权限。

      如果没有安装 IIS 重写模块,以上所有这些都是不可能的,手动也不行,所以 WP 会在路径中包含 /index.php/ 片段。如果您使用自定义永久链接设置覆盖此设置,则链接将采用(因此将不包含/index.php/ 片段,但由于缺乏重写工具,IIS 将提供404

      【讨论】:

        猜你喜欢
        • 2012-09-11
        • 2017-05-20
        • 1970-01-01
        • 2016-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-18
        • 2015-11-08
        相关资源
        最近更新 更多