Можно предложить множество решений, которые по
сути будут являться лишь различными комбинациями двух «полярных» приёмов.
Давайте рассмотрим эти два «полярных» решения.
Ограничение доступа средствами
SSI
Проблему можно решить, используя только средства SSI. Для этого
воспользуемся тем, что переменные окружения основного документа доступны и
вставляемому документу.
Давайте создадим в основном документе
переменную-флажок:
<!--#set var="SSI_FLAG"
value="YES" -->
<!--#include virtual="head.sthml"
-->
<p>Содержимое
страницы</p>
</body>
</html>
А во вставляемом документе проанализируем,
установлен ли флаг:
<!-- файл шапки head.shtml
-->
<!--#if expr="$SSI_FLAG"
-->
<html>
<head>
<title>Название</title>
</head>
<body>
<h1>Название</h1>
<hr>
<--#else -->
<html>
<head><title>ERROR
999</title></head>
<body><h1>Документ
не доступен</h1></body>
</html>
<!--#endif -->
Теперь, если клиент случайно или нарочно запросит
напрямую документ head.shtml, то процессор SSI не обнаружит переменную
окружения SSI_FLAG, сработает ветка else и посетитель получит сообщение о
загадочной ошибке 999.
Если же документ head.shtml используется для
включения, то он обнаружит флаг, предварительно установленный нами.
|