Хак для WordPress, решающий проблему HTTP 404
Что такое HTTP 404 все знают. Но не всегда это отсутствие самой страницы, файла. Кто работает с WordPress, могли сталкиваться с проблемой примерно следующего характера.
Из какой-то части своего блог/сайта на WordPress отправляется ajax-запрос на отдельный php файл. На сайте включены permalinks. Файл возвращает ответ, все хорошо, но с ошибкой 404. Поэтому ваш скрипт не обрабатывает ответ, даже если там все ок. Это часто проявляется на серверах lighttpd.
Ковырять без того уродливые конфиги lighttpd, пробовать mod_magnet и lua скрипты для настройки пермалинков — это геммор еще тот, тем более, для не знающего человека. WordPress в принципе в состоянии сам решить все эти проблемы.
Для тех, кто испытывал(ет) аналогичную проблему, делюсь простым решением:
add_filter('status_header', 'rw_hack_404', 10);
function rw_hack_404($c) {
if (defined('HACK_404')) {
$header = '200';
$text = get_status_header_desc($header);
$protocol = $_SERVER['SERVER_PROTOCOL'];
if ('HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol)
$protocol = 'HTTP/1.0';
return "$protocol $header $text";
}
else {
return $c;
}
}
Копируем, вставляем в functions.php. А в файле для запроса в самое начало добавляем:
define('HACK_404', true);
require($_SERVER['DOCUMENT_ROOT'].'/wp-blog-header.php');
# ваш код
Все!
See? It wasn't Lighty's fault after all :P
In Apache it not happens. I have implented in same way feedback stuff and it's ok. No error at all. Anyway, thanks in advance with the problem :)
А в файле для запроса это где примерно что то не совсем представляю?
Файл ajax-запроса — любой ваш файл, который не используется в шаблонном назначении в wordpress. Наприме, в корне в отдельной папке './feedback/sendfeedback.php'
полезная штука спасибо!
подскажите пожалуйста как реализовать данный хак в wp 3.0.x ?
На эту запись ссылаются: