IIS永久链接兼容性 - web.config无法正常工作?

时间:2015-01-16 16:44:34

标签: wordpress iis migration http-status-code-404 permalinks

我正在开发一个已经过实时迁移的网站,但现在每个页面都会在链接到主页404s之后除外。

我对此进行了广泛的研究,没有任何帮助。让我列出我尝试过的事情:

  1. 我在使用IIS的Windows服务器上运行。因此,如果它是永久链接结构问题,那么web.config文件(mod_rewrite功能)应该解决问题。但事实并非如此。主页仍然按原样显示,其他页面仍然是404。
  2. 将永久链接切换为默认确实可以解决问题,但会破坏客户端所需的链接。所以我不能用它作为解决方案。固定链接需要保留“帖子名称”。
  3. 广泛的IIS研究表明,一种可能的解决方案可能是ISAPI重写。我下载了一个Wordpress插件... ISAPI重写器。当我激活这个插件时,主页也崩溃了。所以我停用了这个插件。
  4. 使用All-In-One WP Migration进行迁移,据我所知,它几乎没有做任何事情。数据库可能已移植过。内容来了,这很好。主题看起来不错。但没有一个钩子(其数量相当大)过来了。此外,已修改主题的实际javascript文件在新网站上未经修改。主页的大部分(以及每隔一页的扩展名)都是无效的。据我所知,在使用All-In-One WP Migration之后,为了解决Permalinks问题,您需要将Permalinks设置保存两次。我做到了。错误仍然存​​在。除主页之外的所有页面仍然是404。
  5. 我联系了All-In-One WP Migration的开发者,他们正在推出一个实验性的新版本......我只是停在那里。问题依然存在。所有页面404.
  6. 我在Microsoft网站和Wordpress Codex上找到了关于如何解决这个问题的线程和页面,包括直接从Wordpress Codex更新web.config文件。一切都无济于事。
  7. 在你告诉我这个网站上有一百万个这样的问题之前,我已经看过几乎所有这些问题了。没有帮助。
  8. 那么有人真的在IIS上解决了这个问题吗?任何人都可以对此有所了解或指出我的新方向吗?

    我的web.config文件的代码如下:

    <?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>
    

    这些设置在IIS上的另一个站点上的类似服务器上工作但不在我现在正在处理的那个上。 Wordpress推荐使用此代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <system.webServer>
    <rewrite>
    <rules>
    <rule name="WordPress Rule" stopProcessing="true"> //notice a change here
    <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?page_id={R:0}" /> //notice a change here
    </rule>
    </rules>
    </rewrite>
    </system.webServer>
    </configuration>
    

    我也尝试过这个但没有成功。还有其他想法吗?

2 个答案:

答案 0 :(得分:2)

我已经添加了一些时间,因为IIs使用此代码。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="rule 1E" stopProcessing="true">
                    <match url="^overseer/?$"  />
                        <action type="Rewrite" url="//wp-login.php" appendQueryString="true" />
                </rule>
                <rule name="WordPress Rule" 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?page_id={R:0}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

答案 1 :(得分:0)

这是我用来使客户端能够在IIS7 +上进行自定义重写的功能

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="WordPress Rule" 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?page_id={R:0}"/>
        </rule>
        <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>

确保您进入永久链接设置,然后在更新后单击“保存”。