Server Side Includes (SSI)
SSI is an old but still effective way to simplify certain web page tasks. Essentially, with SSI you
can "include" pages or scripts in the text of a web page without having to write it out every time. A
perfect example is a page footer, like the one at the bottom of this page - that can be referenced in a
single line, and then when we want to make changes we can change just the single footer file rather
than the html on every page that uses the footer. SSI can include information like current date, the
file's last modification date, and the size or last modification of other files.
Every hosting account supports Server Side Includes automatically!
IMPORTANT: in order for SSIs to work, your file must be named with the ".shtml" extension.
SSI can be used to output the last modification date of the file the user requested.
This is done by using the "echo" element and the LAST_MODIFIED variable. The command would be:
<!--#echo var="LAST_MODIFIED" -->
Other variables that can be output in this fashion include DATE_LOCAL (date in the
local time zone, EST), DATE_GMT (date in Greenwich Mean Time), DOCUMENT_NAME (the filename of the
document), and DOCUMENT_URI (the URL path of the document).
Another common use of SSI is to include the output of a CGI script within your
page. The SSI command to do so is:
<!--#exec cgi="/cgi-bin/included_script.cgi" -->
The most common use for SSI is probably including a file within your page. This could
be used to have a common footer on every page, for instance, while still being able to change it by
altering a single file. Including a file via SSI is done with:
<!--#include virtual="/filename.html" -->
The value of the "virtual" attribute is derived from the URL needed to view the file
under your domain name, minus the domain name and "http://". For instance, if the file to be included
is located at http://www.example.com/files/includes/first.txt, your call to include it in other files
under that domain would be:
<!--#include virtual="/files/includes/first.txt" -->
In some cases, you may want every .html file to be parsed for SSI. This can be done
with the following command in your .htaccess file:
AddType text/x-server-parsed-html .html
Note: Please do not do this unless you genuinely intend to use SSI in all of your
files. The unnecessary overhead of parsing the files that do not actually use SSI will slow the server
down and make your site less responsive (each file will take longer to download as the server must
process every file).
Also, don't do this for .shtml files; it will make them stop working!