Назад | Перейти на главную страницу

В IIS 6 по умолчанию на странице 404 используется относительный файл вместо URL.

У меня есть сервер 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>