Pull to refresh

Собственные страницы ошибок на сервере IIS

Я думаю каждый сталкивался с проблемой создания собственных страниц ошибок на IIS. Сейчас об этом речь и пойдёт.

Настройка Web.config


Многие наверняка знают самый простой и очевидный способ:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <system.web>
      <customErrors mode="On">      
         <error statusCode="403" redirect="/Errors/403.cshtml" />
         <error statusCode="404" redirect="/Errors/404.cshtml" />
      </customErrors>
   </system.web>
</configuration>


Но он не работает, а если и работает, то не всегда.

Поэтому я предлагаю вот такой вариант решения этой проблемы:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
     <system.webServer>
          <httpErrors>
               <remove statusCode="404" subStatusCode="-1" />
               <error statusCode="404" prefixLanguageFilePath="" path="/Errors/404.php" responseMode="ExecuteURL" />
               <remove statusCode="403" subStatusCode="-1" />
               <error statusCode="403" prefixLanguageFilePath="" path="/Errors/403.php" responseMode="ExecuteURL" />
          </httpErrors>
     </system.webServer>
</configuration>



Вы наверняка заметили, что страницы с ошибками написаны на php. Я объясняю это тем, что при использовании ASP.NET MVC это не работает.

Страницы ошибок


Теперь перейдём непосредственно к страницам ошибок:
<?php
$errorname = "HTTP 404 Not Found";
$errornamedisplay = "404";
require("template-header.php"); //включение шаблона шапки страницы
header("HTTP/1.0 404 Not Found"); //передача заголовка клиенту
$url=$_SERVER['REQUEST_URI']; //нужно для отображения адреса страницы
?>
<blockquote>
     <blockquote>
          <blockquote>
               <p><span class="header">Запрашиваемая страница с адресом
                    
                    '<?php echo"$url";?>'
                    не найдена.</span> </p>
               <blockquote>
                    <p>Возможно, она была перемещена или временно недоступна.</p>
                    <p>Вы можете перейти на <a href="http://www.worldfly.info" target="_top">главную страницу World Fly</a>,</p>
                    <p> или воспользоваться поиском:
                    <form action="/Search/site.php" method="get" dir="ltr" lang="ru">
                         <input autocomplete="off" name="q" size="100" type="search" dir="ltr" placeholder="Поиск по World Fly" />
                         <input name="Отправить" type="submit" value="Поиск" />
                    </form>
                    <p>  </p>
                    <p> </p>
                    <p>Если Вы уверены, что мы виноваты в Вашем попадании сюда <a href="mailto:support@worldfly.info">сообщите нам : support@worldfly.info</a>.<br />
                    </p>
                    </p>
                    <p> </p>
                    <p> </p>
               </blockquote>
          </blockquote>
     </blockquote>
</blockquote>
<?php 
require("template-footer.php"); //включение шаблона подвала
?>

Таким образом Вы теперь знаете, как создать собственные страницы ошибок на IIS сервере.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.