Почему Несуществующая страница возвращает статус 302 при использовании пользовательской страницы 404 в asp.net - PullRequest
5 голосов
/ 17 мая 2010

Я настроил пользовательскую страницу 404 custom404.aspx, которая правильно возвращает ошибку «404 Not Found», однако изначально не запрошенная несуществующая страница возвращает статус «302 Found».

Поэтому, когда я тестирую thispagedoesnotexist.aspx, он возвращает «302 найдено», затем custom404.aspx загружается и возвращает статус «404 не найдено».

Я хочу убедиться, что поисковые пауки / боты понимают, что запрошенная страница не существует и не должна отображаться в результатах поиска. Правильно ли настроен этот параметр?

Ответы [ 4 ]

0 голосов
/ 27 августа 2010

Я нашел решение для этого:

в вашем файле web.config введите "redirectMode = ResponseRewrite":

<customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/errors/GeneralError.aspx">
            <error statusCode="404" redirect="~/errors/PageNotFound.aspx" />
        </customErrors>

... А на вашей собственной странице 404 в Page_Load положить: this.Response.Status = "404 Not Found";

Voila!

0 голосов
/ 18 мая 2010

Чтобы ответить на поставленный вопрос, именно так работают пользовательские ошибки в ASP.NET. Я видел примеры (хотя у меня их нет под рукой), когда люди использовали HttpModules для перехвата ошибок, и раздавали пользовательские страницы ошибок пользователям, которые не являются ботами, а также 404-ответ пользователям быть ботами.

В другом направлении, я не уверен, что боты все равно регулярно следят за 302 ответами. Возможно, более уместно, неужели так плохо, что ваша страница с ошибкой (если она пригодна для использования) отображается в результатах поиска? По крайней мере, у пользователя есть ссылка на ваш сайт - это лучше, чем показывать сайт вашего конкурента ...

0 голосов
/ 18 мая 2010

На самом деле, скорее всего, он работает именно так, как настроено в вашем файле web.config.

В зависимости от того, какой веб-сервер вы используете (IIS 6/7) и каким способом вы использовали для настройки пользовательской страницы 404, но в основном это разница между перенаправлением на пользовательскую страницу ошибки и ее выполнением!

В настоящее время вы настроили asp.net / IIS для перенаправления на страницу ошибки. Измените настройки для запуска страницы, и вы получите именно то, что искали:)

0 голосов
/ 18 мая 2010

Проще говоря ...

В качестве примера используйте:

/path_to_error_page.html 

... а не ...

http://www.example.com/path_to_error_page.html

Причина в том, что сервер интерпретирует начальный запрос, а затем создает перенаправление на 404, так что ваш клиент фактически получает 2 ответа

Относительные пути не производят перенаправление, но передача с внутреннего сервера приводит только к одному ответу, который вы хотите !!

Это должно исправить вашу проблему.

...