Передача данных (1-й способ):
    Данные передаются точно так же, как и для обычных html файлов - через URL
    либо с помощью формы методом GET. В принципе, и обрабатывать их можно точно
    так же. Но, если вы хотите изменять SSI-вставку в зависимости от переданных
    данных, читайте дальше. 
    Особенности:
    Для SSI данные лучше передавать в виде name=value. Метод GET формы так и
    делает, а вот если вы самостоятельно формируете строку запроса, она должна
    выглядеть так: 
     
    file.shtml?var1=value1&var2=value2 и т.д. 
     
    Получение данных:
    Нам мало передать данные. Нам надо еще и получить их. Для того, чтобы
    увидеть, что мы там себе передали, включите в файл строку 
     
    <!--#printenv -->
    
    Эта строка нам в дальнейшем не понадобится. Она нужна лишь для того, чтобы
    увидеть, передается ли хоть что-нибудь. В дальнейшем, если что-то не так
    пойдет, вставьте эту строку в файл и проверьте, может вы где-то не так
    буковку написали. 
    Самый простой способ использования:
    Допустим, у вас на сайте есть FAQ, но ответы на вопросы такие объемные, что
    хотелось бы выводить их по одному и при этом, если потом приспичит поменять
    дизайн, чтобы долго не возиться. Мы делаем одну страничку (назовем ее
    faq.shtml), оформляем ее как положено, а в том месте, где должен быть ответ,
    пишем 
     
    <!--#include virtual="${file}" -->
    
    Учтите, что может быть, для вашего сервера надо использовать не фигурные, a
    круглые скобки или даже вообще без них обойтись. 
    Теперь ответы на вопросы пишем каждый в своем html-файле, в котором нет
    ничего, кроме текста да тегов, с ним связанных (B, FONT и т.д), и желательно
    не использовать атрибуты COLOR, чтобы потом не мучаться.
    Ссылки на ответы надо делать следующим образом
     
    <a href="faq.shtml?file=url">
    
    где url - адрес html-файла, содержащего ответ, можно относительный - только
    смотрите не запутайтесь.
    
    В принципе, весь сайт можно организовать по такому принципу. Если вы любите
    менять дизайн, то чтобы это сделать, достаточно будет изменить всего один
    файл - и вот у вас новый сайт. 
    
    Обработка данных:
    Все это хорошо. Но хочется еще чего-нибудь похитрее. Если вы уже знакомы с
    SSI, дальше нового вы не узнаете, если нет - читайте. 
    В файлах SSI можно использовать переменные. Они объявляются так:
     
    <!--#set var="name" value="value" -->
    Передача данных 
    file.shtml?username=Alexey&birth=1974
    эквивалентно 
    <!--#set var="username" value="Alexey" -->
    <!--#set var="birth" value="1974" -->
    
    
    Возможности по использованию этих бесценных сведений в SSI довольно
    ограничены, но мы можем попытаться с ними что-нибудь сделать. 
    
    Можно просто вставить переменную в документ:
     
    <!--#echo var="name" -->
    Например, используя переданные ранее данные, можно написать 
    Привет, <!--#echo var="username" -->
    В результате чего на экране появится Привет, Alexey
    Пример посложнее. Если в файле написать 
    <!--#set var="title" value="заголовок" -->
    то потом в вызывающем файле можно использовать 
    <title><!--#echo var="title" --></title>
    
    Таким образом, мы можем передавать из включаемых файлов в вызываемые
    различные конфиденциальные сведения. Пользователь не видит инструкции SSI -
    они обрабатываются сервером и передаются уже в итоговом, "готовом к
    употреблению" виде. 
    
    Можно поизвращаться и попробовать проанализировать переданные данные и на их
    основе что-нибудь сделать. 
    
    Условные операторы выглядят так:
    
    <!--#if expr="condition" -->
    <!--#elif expr="condition" -->
    <!--#else -->
    <!--#endif -->
    
    Элемент endif является обязательным. elif можно повторять сколько угодно
    раз. После if и elif пишется HTML-код, который будет подставляться при
    истинности условия. После else пишется код, который подставится, если ни
    одно из имеющихся ранее условий не выполнилось.
    
    Например:
     
    <!--#if expr='"$username'="Alexey"' -->
    <h1>Привет, <!--#echo var="username" --></h1>
    <!--#else -->
    <h2>Привет, <!--#echo var="username" --></h2>
    <!--#endif -->
    
    
    Такой нехитрый код выводит приветствие, но если человека зовут Alexey, буквы
    будут чуть-чуть побольше. 
    
    Передача данных (2-й способ)
    Можно передавать данные и средствами SSI. Плюс у этого метода в том, что он,
    в отличие от первого способа, проходит незамеченным для пользователя. Чтобы
    передать данные, надо их присвоить какой- нибудь переменной. Все переменные,
    объявленные в файле, доступны и в вызываемых, и в вызывающих файлах. Но!!!
    Само cобой разумеется, что надо сначала подключить файл, а потом
    использовать имеющиеся в нем данные, а в подключаемых файлах использовать
    можно только то, что имеется к моменту подключения.
     
    Второй способ организации сайта:
    Он немножко сложнее, но (имхо) прогрессивнее.
    Все свои статьи пишем в формате html, но избегаем применения тегов, меняющих
    цвет, и не указываем body. Сохраняем (допустим в файле text.html), и
    запоминаем адрес этого файла. Никому его не говорим - он будет для сугубо
    внутреннего использования. 
    Теперь создаем "публичный" файл для этой статьи, его мы будем заносить в
    каталоги и рекомендовать знакомым. Он состоит всего из нескольких строчек. 
    <html>
    <!--#set var="description" value="описание" -->
    <!--#set var="title" value="Заголовок" -->
    <!--#set var="keywords" value="ключевые слова" -->
    <!--#set var="file" value="url статьи" -->
    <!--#include virtual="файл интерфейса.shtml" -->
    
    
    Как видите, мы указали в нем заголовок, ключевые слова, описание и
    "приватный" файл, в котором содержится статья (text.html). Можно еще
    написать то, что вы там еще обычно пишете в заголовке. Я чаще всего
    ограничиваюсь одним title. Как-то спокойно отношусь к тому, что
    релевантность маленькая окажется :-). 
    Теперь создаем файл интерфейса (*,shtml). Начало его выглядит так:
    
    
    <html><head>
    <title><!--#echo var="$title" --></title>
    <meta name="description" content="<!--#echo var="$description" -->">
    <meta name="keywords" content="<!--#echo var="$keywords" -->">
    </head>
    Далее оформляем внешний вид - вешаем баннеры, вставляем счетчики, добавляем
    новости и т.д. Наконец в том уголке, где должна быть статья, пишем 
    <!--#include virtual="$file" -->
    
    
    Теперь для радикального изменения дизайна всего сайта достаточно изменить
    лишь наш файл интерфейса. 
    Нюансы
    В зависимости от ситуации а так же различного программного обеспечения может
    быть разным синтаксис написания имен переменных. Если вы все сделали как тут
    написано и ничего не вышло, попробуйте следующее: 
    Вставьте строку <!--#printenv -->
    и посмотрите, есть ли вообще у вас хоть какие-то переменные. Если есть, но
    использовать их не получается, попробуйте другой способ написания :
    
    "name"
    "$name"
    $name
    "${name}"
    "$(name)"
    
    Один из них сработает.
    Если у вас не работает даже printenv, Возможно, вам сначала нужно сделать из
    своего компьютера сервер. Самый простой способ - установить программу Small
    Http Server. Проста в установке и использовании, инструкция на русском
    языке. После установки сможете тестировать на своем компе CGI, SSI, PHP и
    т.д. 
    
    Не всегда и не везде можно получить переданные через URL данные описанным
    выше способом. В большинстве случаев вам можно будет передать только одно
    значение file.shtml?value. Переданное таким образом значение value хранится
    в переменной QUERY_STRING или QUERY_STRING_UNESCAPED, если вам позарез нужно
    было передать буквы русского алфавита. Впрочем, может оказаться так, что на
    вашем сервере даже доступ к QUERY_STRING не предусмотрен. Используйте
    printenv, чтобы определить это. Если эта директива показывает, что среди
    доступных переменных QUERY_STRING и не пахнет, вам остается возможным
    передавать данные только средствами SSI. Если QUERY_STRING есть, но при
    попытке передать несколько значений в переменной сохраняются и знак
    равенства, и амперсант (&), значит сервер не выполняет предварительный
    анализ входящих данных и не воспринимает передаваемые значения как пары
    переменная-значение.
    
 
    Источник: Школа
    начинающего Юзера