У меня есть сервер IIS6, который возвращает 200, когда у меня есть настраиваемая страница 404 (установлена на URL /404.htm).
Читая его, кажется, что если я вместо этого использую параметр «файл», он вернет фактический код состояния 404.
Однако я хочу иметь возможность установить это для всех веб-сайтов на моем сервере (несколько сотен), поэтому я хочу иметь возможность использовать относительный путь.
При использовании диспетчера IIS он позволяет мне выбрать только абсолютный путь.
Поскольку это IIS, можете ли вы просто поместить файл в корень каждого веб-сайта? (возможно, будет легко с пакетным файлом).
Этот файл будет web.config
файл (используется в ASP.NET)
Код в web.config будет выглядеть так.
<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="On" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="http://localhost/404.htm" />
</customErrors>
</system.web>
</configuration>
Затем вы создаете другой веб-сайт в IIS, на котором размещается ваш 404.htm
файл и запустить его в localhost
В качестве альтернативы вы можете создать 404.aspx
файл и подключите его как страницу ошибки 404 (вместо 404.htm
). Этот файл будет выглядеть примерно так.
<%@ Page language="c#" %>
<html>
<head>
<script language="CS" runat="server">
void Page_Load(object sender, System.EventArgs e)
{
// here were actually telling the browser that the page is 404 and not 200
Response.Status = "404 Not Found";
Response.StatusCode = 404;
}
</script>
<title>404: Whoops, we lost your file.</title>
</head>
<body>
<h1>404</h1>
<div>Oops, the resource you are looking for is unavailable</div>
</body>
</html>