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

2 Апр
2012

Я думаю каждый сталкивался с проблемой создания собственных страниц ошибок на 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 сервере.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх