Почему апач возвращает 404 ответа для файла, который существует?

Хорошо, так же, как я действительно не потворствую помещению сервера для сна, проверяю следующее

  • Запустить
  • Панель управления
  • Питание
  • Чуть ниже в настоящее время избранного плана, нажмите "Change Plan Settings"
  • Нажмите на ссылку для, "Изменяют настройки, которые в настоящее время недоступны"
  • Хорошо к контролю учётных записей
  • Измененные усовершенствованные параметры питания
  • В списке, который представлен, найдите свою сетевую плату и ищите свойство, названное, "Позволяют этому устройству просыпаться, компьютер" - удостоверяются, что это установлено на Да.

Если Вы не можете найти установку там, зарегистрируйтесь в следующем местоположении:

  • Запустить
  • Панель управления
  • Система
  • Диспетчер устройств
  • Хорошо к контролю учётных записей
  • Найдите свою сетевую плату, щелкните правой кнопкой и перейдите к Свойствам
  • Перейдите к вкладке Power Management
  • Галочка "Позволяет этому устройству будить компьютер"
  • Удостоверьтесь, чтобы "Только позволили станциям управления просыпаться, компьютер" неконтролируем
1
задан 18 August 2010 в 19:27
1 ответ

Ответ, оказалось, зависел от информации, не существующей в моем вопросе — но dtruss вывод должен был быть большой подсказкой!

У меня есть a PerlMapToStorageHandler Apache2::Const::OK директива в моей апачской конфигурации согласно предложению в mod_perl документации. Это - установка всего хоста, и она препятствует тому, чтобы апач звонил ap_directory_walk() и stat()луг набор файлов каждый раз это получает запрос. Это желательно, когда все Ваши URIs являются "виртуальными" (т.е. не соответствуйте реальным файлам на диске), но это также означает, что Вы не можете служить никаким статическим файлам!

Мое решение состояло в том, чтобы создать пользовательское PerlMapToStorageHandler стандартная программа, которая избегает stat() призывы к каждому файлу кроме того я хочу служить:

package MyMapToStorageHandler;

use strict;  
use Apache2::RequestRec();
use Apache2::Const -compile => qw(DECLINED OK M_TRACE);

sub handler {
    my $r = shift;

    # Fall through to the default handling for TRACE requests and requests
    # for the index.html file.
    if ($r->method_number == Apache2::Const::M_TRACE || $r->uri eq '/index.html') {
        return Apache2::Const::DECLINED;
    }

    # Skip ap_directory_walk stat() calls by just returning OK
    return Apache2::Const::OK;
}

1;

Затем в моем httpd.conf файл я заменил свое существующее PerlMapToStorageHandler Apache2::Const::OK директива с этим:

PerlLoadModule MyMapToStorageHandler
...
PerlMapToStorageHandler MyMapToStorageHandler

Это добилось цели.

3
ответ дан 3 December 2019 в 19:35

Теги

Похожие вопросы