WordPress 子页面不工作

Wordpress subpages not working

我有这个 wordpress 网站,突然子页面停止工作,这以前发生过,我现在修复了它,我的重写规则有什么问题?我收到 404 错误,这是一个名为 /about-us

的 wordpress 页面
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

~

您的 WordPress 网站无法运行的原因是您已从 Apache 迁移到 IIS,但没有将重写规则从 .htaccess 迁移到 Web.config 文件。因此,所有漂亮的 WordPress link 都失败了,因为 IIS 不会重写它们,因为它从不读取 .htaccess 文件。

您需要在与您的 WordPress 相同的目录中找到 Web.config 文件。如果那里没有 Web.config 文件,请按如下方式创建它。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
  </system.webServer>
</configuration>

现在只需在现有或新创建的 Web.config 文件的 <system.webServer> 元素中添加以下重写规则。

<rewrite>
  <rules>
    <rule name="WordPress" stopProcessing="true">
      <match url=".*" />
      <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>

上述规则与您的 .htaccess 文件中的规则相同。它匹配任何不对应于任何现有文件或目录的请求 URL,并将请求转发给 index.php,后者从仍然可以通过 REQUEST_URI 服务器变量。