Почему апач не показывает 404 ошибки, когда я отправляю 404 заголовка с php?

Все, что Вы сделали, корректно, если Вы хотите, чтобы Ваш тест спросил, "Каково последнее событие, которое было сгенерировано?"

Ваш код запускает эти два события в этом Измененном Свойстве порядка

  • (... "Мое Свойство"...)
  • Измененное Свойство (... "MyOtherProperty"...)

, "Корректно" ли это или не зависит от цели этих событий.

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

[TestMethod]
public void Test_ThatMyEventIsRaised()
{
    List<string> receivedEvents = new List<string>();
    MyClass myClass = new MyClass();

    myClass.PropertyChanged += delegate(object sender, PropertyChangedEventArgs e)
    {
        receivedEvents.Add(e.PropertyName);
    };

    myClass.MyProperty = "testing";
    Assert.AreEqual(2, receivedEvents.Count);
    Assert.AreEqual("MyProperty", receivedEvents[0]);
    Assert.AreEqual("MyOtherProperty", receivedEvents[1]);
}
7
задан the_drow 18 February 2012 в 21:53
поделиться

2 ответа

Заголовок - это не то, что сообщает Apache отображать страницу 404. Напротив, , когда Apache отображает свою страницу 404, он отправляет вместе с ней заголовок 404. Заголовок должен иметь значение для браузера , а не для сервера. Apache отображает ошибку 404, когда не может найти нужный файл для отображения. Поскольку вы используете сценарий PHP, Apache уже нашел файл, который он может отображать, и поэтому не будет отображать собственную страницу 404.

18
ответ дан 6 December 2019 в 07:07
поделиться

Заголовки, отправляемые PHP, в данном случае имеют значение только для браузера. Apache не собирается создавать свою собственную страницу, потому что вы уже обрабатываете страницу, и если вы что-то отправите, они будут конфликтовать.

Да, файл .htaccess остановит Apache от отображение страницы с ошибкой, потому что ваши правила заставляют Apache думать, что у него больше нет ошибки 404 , потому что он нашел страницу для отображения.

Отправка заголовка на самом деле является только «сообщением о статусе», а не не заставляйте браузер или сервер показывать определенную страницу. (Хотя большинство браузеров это делают.)

Как Дэв указал в комментариях, вы захотите отправить 404 ошибки на их собственную страницу ошибок.

7
ответ дан 6 December 2019 в 07:07
поделиться
Другие вопросы по тегам:

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