Frequently Asked Questions
Building Your Site - Server Side Includes
Introduction
A server side include, or SSI, is a piece of code that is embedded into an HTML page and interpreted by the the server before the page is sent to the client's browser. SSI's allow you to include information in your HTML files like a file's date of last modification, another HTML file, a counter, or the output of any CGI script.
Any file that has the extension .shtml will automatically be parsed by the server. You can use index.shtml instead of index.html as your default directory file.
SSI Commands
SSI Commands The following is a list of Server Side Include basics: A server side include command is contained within a comment tag:
<!--#command argument="value" -->
The syntax must be correct, or your include will not work.
- include -
To include the contents of another file in a shtml file, you use the include command.
The include command has two possible arguments: virtual and file.
virtual is used when the path to the document is given relative to the document root (usually your www directory.)
file is used when the path to the document is given relative to the shtml file itself. However, you cannot use "file" to go up a directory ( "../slime.html" won't work.)
Suppose we want to include the file named "file.html" which resides in the same sub directory of as this shtml file.
To include it using virtual, you would use:
<!--#include virtual="/mirror/ssi/file.html" -->
To include it using file, you would use:
<!--#include file="file.html" -->
- echo -
The echo command includes, or echos the contents of an environment variable. The following values can be echoed using the echo tag, as in:
<!--#echo var="DOCUMENT_NAME" -->- SERVER_SOFTWARE server application
- SERVER_NAME hostname of the server
- SERVER_PROTOCOL server protocol
- SERVER_PORT listening TCP port
- REQUEST_METHOD HTTP method used by the client
- REMOTE_HOST domain name of the client, note DNS option must be set
- REMOTE_ADDR IP address of the client
- AUTH_TYPE method that the client used for authorization
- REMOTE_USER username entered by the remote client
- CONTENT_TYPE MIME type of the content posted by the client
- CONTENT_LENGTH size of the data posted by the client
- DOCUMENT_NAME name of the document requested
- DOCUMENT_URI URL of the document requested
- DATE_LOCAL current date, format specified by the config command
- DATE_GMT The current GMT, format specified by the config command
- LAST_MODIFIED document modified date, format specified by the config command
- PAGE_COUNT number of hits on the current document since server came on-line
- TOTAL_HITS number of documents server has served since coming on-line
- REFERRER The URL of the document the viewer came from
- exec -
The exec command executes a Unix command or CGI script. It always takes the argument "cmd".
<!--#exec cmd="/usr/bin/date" --> This executes the Unix date command.
<!--#exec cgi="./hello.cgi" --> This executes the CGI script, hello.cgi.
If you look carefully you will notice the second line uses the statement exec cgi opposed to the previous line which used exec cmd. The second line is calling a CGI script that was written, the first a UNIX command. Here is the perl code contained in hello.cgi:
#!/bin/perl
print "Hello";
exit;
All the environment variables passed to the CGI script are the same as those for the shtml file itself.
So, you cannot pass a query string using a question mark (?), as in:
<!--#exec cmd="hello.cgi?query" -->
The query string passed to the CGI script will be the same as the query string passed to the shtml file itself. If this file were referenced as "ssi.shtml?snort", than the word "snort" would also be passed to the "hello.cgi" script above.
- fsize -
The fsize command returns the size of the specified file in bytes. It uses the argument "virtual," which is the path to the file is given relative to the document root (usually your www directory.)
To find the size of picture.gif, you would use:
<!--#fsize virtual="graphics/picture.gif" -->
This would return then return the file size.
Your probably now asking, what can I use this for? Example: You offer some files available for download on your site and would like to give people an idea of how big the files are.
- flastmod -
The flastmod command returns the date the specified file was last modified.
The flastmod command uses the argument "virtual," which is the path to the file is given relative to the document root (usually your www directory.)
To find the last modified date of a file, you would use:
<!--#flastmod virtual="filename.txt" -->
This would return: Friday, 06-Sep-96 03:36:06 EDT
- config - The config command is used to control how the results of other SSI are displayed. There are three possible arguments: timefmt, sizefmt and errmesg.
To set the format for the date to dd/mm/yy, you will use:
<!--#config timefmt="%d/%m/%y" -->
The date will now be displayed as: 03/06/97
The field descriptors used by this SSI tag are the same as those used by the Unix date command.
Notice the dates displayed above this config command use the normal date format, the one below it uses the new format.
To set the format for how file sizes are displayed, you use:
<!--#config sizefmt="abbrev" -->
or:
<!--#config sizefmt="bytes" -->
Depending on whether you want the size given in total bytes or abbreviated as "1k".
To set error message returned when an SSI tag fails, use:
<!--#config errmsg="Error" -->
A failed SSI tag will now return: "Error"

We’re always here for you
Our Support staff is ready to answer any questions you may have 24/7.
Contact us today!
Powerful Servers
- P4 2.8 GHz or faster
- PC3200 DDR RAM
- Dual hard disks - SCSI / IDE
- Raid level 5

