Tag/tag.png

Style Cleanup Required
This article does not follow the style standards in the Wiki Guide. More info...

How to set up Server Side Includes (SSI) on Apache, assuming you already have Apache installed.

Server Side Includes are a very simple way of performing a limited Server Side Programming. For instance, you can have the server assemble one single document by merging smaller ones (with the #include directive), you can display data on the file itself (with the date_local directive, and many more), and if security is none of your concern, you can even execute local programs.

Enable the Includes module

sudo a2enmod include

This creates a symlink in mods-enabled of the config file in mods-available.

Editing config

Open the /sites-available/default file...

gksudo gedit /etc/apache2/sites-available/default

find this section...

<Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
</Directory>

and edit it to look like this:

<Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews Includes
        AllowOverride None
        Order allow,deny
        allow from all
</Directory>

You need to add Includes to the end of the end of the Options. If you only want to run server side includes from your user directory, the /etc/apache2/mods-available/userdir.conf file aready has a IncludesNoExec in the Options line.

If you want includes in index pages then edit the /etc/apache2/mods-available/dir.conf file from this:

<IfModule mod_dir.c>
          DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

to this (indent changed to fit onto one line in this document):

<IfModule mod_dir.c>
 DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm index.shtml
</IfModule>

Note that on some older versions of Ubuntu, the /etc/apache2/mods-available/mime.conf might not contain the required AddType and AddOutputFilter directives for .shtml. and so another two lines will be required in /etc/apache2/sites-available/default:

<Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews Includes
        AllowOverride None
        Order allow,deny
        allow from all
        AddType text/html .shtml
        AddOutputFilter INCLUDES .shtml
</Directory>

Restart Apache

For the changes to take effect you will need to restart Apache with

sudo service apache2 restart

Test it works

Create a SSI test file and save it under /var/www/ssi-test.shtml.

<html>
<head>
<title>SSI Test Page</title>
</head>
<body>
<!--#echo var="DATE_LOCAL" -->
</body>
</html>

In your WebBrowser, go to http://127.0.0.1/ssi-test.shtml.

If your browser displays the local date (eg Sunday, 18-Mar-2012 11:12:56 PDT), SSI is working!

Tested on Ubuntu 9.04, 12.04, 13.04


Based on Rafael Gattringer's Ubuntu Apache2 SSI Installation guide, with permission.

For usage examples, see also SSI on apache.org, but do not use it as a how to enable SSI reference, use this guide.


ServerSideIncludes (last edited 2014-06-06 13:03:12 by ya-bo-ng)