Постоянные ссылки Wordpress на IIS вызывают ошибку 500

Хорошо, я искал в сети везде, и хотя есть несколько совпадений, это не решает мою проблему. Я использую Wordpress 3.9, PHP 5.4.14, IIS8 в Windows 2012, и у меня установлен модуль URL Rewrite версии 2. Всякий раз, когда я включаю постоянные ссылки на своем сайте WordPress (/%category%/%postname%/), я получаю следующую ошибку (это на сервере. От клиента дополнительная информация скрыта):

Внутренняя ошибка сервера 500.0
C:\PHP\v5.4\php-cgi.exe — процесс FastCGI неожиданно завершился
Модуль: FastCgiModule
Уведомление: ExecuteRequestHandler
Обработчик: PHP54_via_FastCGI
Код ошибки : 0x000000ff

Эта ошибка возникает при навигации по моему сайту и даже при работе в wp-admin. Однако, если я нажму кнопку «Обновить» пару раз, в конце концов страница загрузится (в большинстве случаев). Затем я, возможно, смогу перейти еще на пару страниц, прежде чем ошибка возникнет снова, но кажется, что ошибка возникает каждый раз при переходе к сообщению в блоге. Я пробовал оба следующих файла 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>

Также попытался заменить правило на это, которое я нашел в других темах, но вышеприведенное было сгенерировано WordPress:

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

person ViperGTI    schedule 12.08.2014    source источник


Ответы (3)


Не могли бы вы попробовать этот?

<?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>
person WP_    schedule 12.08.2014

Наконец-то кажется, что у меня все заработало. Я использовал проект Brandoo Wordpress для использования MS SQL Server.

Итак, сначала я установил Project Nami на пустой сайт, затем скопировал все плагины с моего предыдущего сайта и обновил файл конфигурации, чтобы подключиться к моей исходной базе данных. Наконец-то обновил свой PHP до версии 5.5.15. Кажется, теперь все работает нормально.

---- Обновление
Хорошо, кажется, простое обновление до PHP 5.5.15 само по себе решает проблему. Это не был мой первый выбор, так как нет официальных доступных драйверов PHP SQL, но, эй... он работает безупречно.

person ViperGTI    schedule 12.08.2014

Я столкнулся с той же ошибкой, и хотя я не пытался обновить PHP, мне помогло то, что было описано в конце https://codex.wordpress.org/Using_Permalinks:

"(...) вы можете попробовать постоянные ссылки PATHINFO; поместите index.php/ в начало вашей пользовательской структуры постоянных ссылок:"

/index.php/%year%/%monthnum%/%day%/%postname%/

При этом мне не нужно было трогать файл web.config.

person Lucas A. Meyer    schedule 20.08.2015