Патч, исправляющий проблему редиректа с кодом 302 в FastCGI
Более изящное решение, нежели представленное в первой части (WordPress, FastCGI и редирект 301).
В первой части предлагалось при использовании web-сервера nginx закомментировать проверку на SAPI PHP (if ( php_sapi_name() != 'cgi-fcgi' )
). Однако есть лучшее решение.
Сразу оговорюсь, что в официальном релизе оно вряд ли скоро окажется (ибо работает с PHP 4.4+, а разработчики WordPress хотят поддерживать такое старьё, как PHP 4.3), поэтому применять данное решение только на свой страх и риск.
Патч в формате unified diff (применять к wp-includes/pluggable.php
):
+++ trunk/public/wp-includes/pluggable.php (modified)
@@ -845,9 +845,7 @@
if ( $is_IIS ) {
header("Refresh: 0;url=$location");
} else {
- if ( php_sapi_name() != 'cgi-fcgi' )
- status_header($status); // This causes problems on IIS and some FastCGI setups
- header("Location: $location");
+ header("Location: $location", null, $status);
}
}
endif;
Идея в том, чтобы переложить ответственность по отправлению кода перенаправления на PHP (который справляется с этим успешнее, чем WordPress). Решение является рабочим, жалоб пока нет
UPDATE: для nginx есть лучший способ: плагин nginx Compatibility.
мне ещё рано такое изучать
[...] этот недочёт WordPress методом, аналогичным описанному здесь: только вместо физического исправления файла функция [...]