Wordpress. IIS. Произошла ошибка. Ответ не является допустимым ответом JSON.
Перейти к навигации
Перейти к поиску
Собственно ошибка: "Произошла ошибка. Ответ не является допустимым ответом JSON" может быть по двум (известным мне) причинам:
1. Не настроен или не правильно настроен rewrite, в IIS проверяем файл web.conf в корне сайта, в нем должен быть примерно такой блок rewrite:
<?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>
Если wordpress лежит во вложенной папке сайта, например /mywp/, то в корневом web.conf добавляется блок rule:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="mywp" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{URL}" pattern="/mywp/*" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/mywp/index.php" />
</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>
2. Добавили в разрешённые методы GET, POST, HEAD, OPTIONS, PATCH
В обработчике php FastCGI обычно разрешено только GET, POST, мне хватило разрешить GET, POST, HEAD, OPTIONS, PATCH. Возможно понадобятся еще PUT, DELETE
Настраивается тут:
Диспетчер службы IIS -> WEB -> сайты -> имя_сайта
Затем заходим в:
Сопоставление обработчиков -> PHP8.1_via_FastCGI -> Ограничения запроса -> Команды
Настройка php FastCGI описана тут. Там почти все правильно :)