Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Такой подход может быть оправдан, если у вас нет никакой возможности влиять на настройки сервера. Но, как вы видите, у него есть несколько недостатков.
Во-первых, это усложнение кода, причём и включающего документа, и включаемого. Во-вторых, теперь, даже если включаемый документ содержит только статическую информацию (как в нашем случае), мы всё равно обязаны обработать его SSI-интерпретатором. Естественно, это увеличивает нагрузку на сервер.
Ограничение доступа средствами сервера
Если у вас есть некоторые полномочия по конфигурированию сервера, то можно обойтись гораздо меньшей кровью.
Во-первых, вернёмся к прежней, простой версии шапки, но переименуем файл, скажем, в head.inc:
<!-- файл шапки head.inc -->
<html>
<head>
<title>Название</title>
</head>
<body>
<h1>Название</h1>
<hr>
Во включаемом файле тоже изменим имя файла-шапки:
<!--#include virtual="head.inc" -->
<p>Содержимое страницы</p>
</body>
</html>
А теперь настроим сервер так, чтобы он не показывал посетителю файлы с расширением .inc.
Для определённости мы будем рассматривать настройки применительно к файлу локальной конфигурации .htaccess. Естественно, все упоминаемые директивы могут быть использованы и в файлах глобальных настроек, таких как httpd.conf.
Нам понадобится всего две директивы:
SetEnvIf Request_URI ".inc$" ssi_part
Deny from env=ssi_part
n SetEnvIf – принадлежит к группе FileInfo. Она позволяет устанавливать переменные окружения, руководствуясь некоторыми условиями. Как видите, мы тестируем запрашиваемый URI на предмет его совпадения с регулярным выражением .inc$. То есть мы проверяем, заканчивается ли имя запрашиваемого документа символами .inc. Если это так, то сервер установит переменную ssi_part. Мы не указываем явно значения, по умолчанию сервер присвоит ей строку «1».