我有一个大型wordpress站点,我从AWS/Linux迁移到了另一个主机,即Windows 2016。
我已经在wordpress上开发了多年,但这是我一段时间以来第一次回到Windows服务器上。
我记得在更新wordpress时,它会编写一个web.config文件来更新该目录的重写结构。现在重写基本上是被破坏的-因为你不应该有破坏你的网站的管理选择。
您的重写必须在函数中包含index.php,否则直接发送id。
奇怪的是,当您选择permalink -/%类别%/%postname%/它是一个404,但是如果您在url中的类别之前手动添加index.php,它会工作。
那么,现在如何在Windows服务器上工作呢?我猜web.config没有被使用。wordpress开发是否放弃了windows服务器,而我们只是在IIS中编写重写规则?我只是想找出土地的布局,因为我还有大约5个站点要迁移,并且希望获得最佳实践(不是真正的服务器最佳实践,而是wordpress的最佳实践,因为迁移后其他站点的接管将不像技术上的那样)。
请注意,我确实试图打开web.config,它给出了一个500。更改permalinks在服务器上没有任何作用--没有添加.htaccess,也没有新的web.config。如果你需要其他信息,请告诉我。
发布于 2021-12-07 17:49:44
我相信这个问题是固定在最近的WP版本,不确定它是固定在哪一个版本。但是在较早版本的WP中,规则name="RULENAME“始终是一样的。名称必须是唯一的,否则IIS模式就会崩溃。
如果您正在复制备份或开发的完整站点,您也会遇到这种情况。
发布于 2021-12-07 11:36:35
从https://www.iis.net/downloads/microsoft/url-rewrite下载IIS重写。安装并重新启动IIS
然后修改web.config编辑web.config,添加重写代码。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<defaultDocument>
<files>
<add value="index.php" />
</files>
</defaultDocument>
<rewrite>
<rules>
<rule name="Main Rule" 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>
</system.webServer>
</configuration>发布于 2021-02-20 21:45:33
您应该安装"URL重写“模块并重新启动服务器,而不仅仅是iis服务。然后重新配置"Permalink设置“。
https://wordpress.stackexchange.com/questions/369327
复制相似问题