![IIS 搞乱了 Wordpress 永久链接还是 WP 的错误?](https://linux22.com/image/520333/IIS%20%E6%90%9E%E4%B9%B1%E4%BA%86%20Wordpress%20%E6%B0%B8%E4%B9%85%E9%93%BE%E6%8E%A5%E8%BF%98%E6%98%AF%20WP%20%E7%9A%84%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我遇到了一个问题,经过一番研究后,我发现了失败的确切原因。
blog.domain.com
无法正常工作,提示无法找到页面(404)
blog.domain.com/index.php
在职的符合预期
如果您单击“主页”,它会说找不到该页面;如果您尝试预览新帖子,它会说找不到该页面...顺便说一下,我可以看到每篇帖子。
我使用 IIS 在 Windows 主机上运行我的博客。
我的永久链接是这样的:
/index.php/%帖子名称%
IIRC 我不得不使用 index.php 因为我的IIS 没有 URL 重写功能。
我对 URL 上的 index.php 没有任何问题,我现在有一个很好的 SEO,我不想更改我的永久链接,但我不知道为什么现在不起作用......只是从一天到下一天......
这是 WP 的问题还是只是我的主机出了问题?如果是我的博客,你知道是什么原因造成的吗?(只是为了创建关于确切问题的具体票据)
谢谢。
答案1
你见过这个吗?:使用不带 mod 重写的固定链接 « WordPress Codex
并且在永久链接中仅使用 %postname% 是 Wordpress 的一个众所周知的问题;最好至少使用 %postname%/%year% 但如果您更改永久链接,WP 不会抛出 404;它们将被转发。
来自上面的链接:
如果您使用的是 IIS 7 并且拥有服务器的管理员权限,则可以使用 Microsoft 的 URL 重写模块http://www.iis.net/learn/extensions/url-rewrite-module/using-the-url-rewrite-module而是。虽然与 mod_rewrite 不完全兼容,但它确实支持 WordPress 的漂亮永久链接。安装后,打开 WordPress 文件夹中的 web.config 文件,并将以下规则添加到 system.webServer 元素
<?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>
</rules>
</rewrite>
</system.webServer>
</configuration>
看http://www.iis.net/learn/extensions/url-rewrite-module/enabling-pretty-permalinks-in-wordpress
答案2
使用 /%postname%/ 的永久链接设置,所有帖子页面均能正确显示,并且 URL 中的帖子名称正确,符合 SEO 要求。但是,我的主页 blogs.halloweencostumesale.com 未显示,并显示 404 页面未找到错误。我托管在 Windows Server 上。
在几个论坛上研究了好几天后,我还是没有找到解决办法。如果我输入 blogs.halloweencostumesale.com/index.php,主页就会显示出来,但只输入 blogs.halloweencostumesale.com 则不会显示出来。
在 IIS 设置中,域允许的默认文档中,我使用的是 Index.php,而我的实际文件是 index.php。Appache 服务器区分大小写,这就是问题所在。我将其更改为 index.php,即域允许的默认文档中全部使用小写,最终一切正常。
答案3
我最熟悉的是 Apache,但我会尝试将那里的逻辑应用到 IIS。有一个配置选项可以确定索引页是什么。也就是说,当您点击 domain.com/ 时,您实际上会得到 domain.com/index.html。在 IIS 中,我相信您要查找的设置称为“默认文档”。您需要将 index.php 添加到默认文档列表中。
如果你无法更改配置,你可以通过添加重定向到 index.php 的 index.html 来作弊。