NAME
    Apache2::Layer - Layers for DocumentRoot

VERSION
    version 1.103360

SYNOPSIS
        # in httpd.conf
        DocumentRoot "/usr/local/htdocs"

        # load module
        PerlLoadModule Apache2::Layer

        # enable layers for whole server
        EnableDocumentRootLayers On

        # disable location strip
        DocumentRootLayersStripLocation Off

        # paths are relative to DocumentRoot
        DocumentRootLayers layered/christmas layered/promotions

        <VirtualHost *:80>
            ...
            # layers enabled for this vhost
        </VirtualHost>

        <VirtualHost *:80>
            ...
            DocumentRoot "/usr/local/vhost2"

            # disabled by default
            EnableDocumentRootLayers Off

            <LocationMatch "\.png$">
                # layer images only
                EnableDocumentRootLayers On
                DocumentRootLayers images_v3 images_v2
            </LocationMatch>


            <Location "/images">
                DocumentRootLayersStripLocation On
            </Location>

            <Location "/images/company1">
                DocumentRootLayers company1/images default/images
            </Location>

            <Location "/images/company2">
                DocumentRootLayers company2/images default/images
            </Location>

        </VirtualHost>

        <VirtualHost *:80>
            ...
            PerlOptions +MergeHandlers
            PerlTransHandler My::Other::Handler
        </VirtualHost>

DESCRIPTION
    Create multiple layers to allow incremental content modifications.

    If file was found in layered directory it will be used instead of one
    from "DocumentRoot".

    Loaded module adds itself as "PerlTransHandler" and
    "PerlMapToStorageHandler", so please remember to use

        PerlOptions +MergeHandlers

    if you want to define your own handlers for those phases.

DIRECTIVES
    Apache2::Layer needs to be loaded via "PerlLoadModule" due to use of
    following directives:

  EnableDocumentRootLayers
        Syntax:   EnableDocumentRootLayers On|Off
        Default:  EnableDocumentRootLayers Off
        Context:  server config, virtual host, <Location*

    Enable use of "DocumentRootLayers".

  DocumentRootLayersStripLocation
        Syntax:   DocumentRootLayersStripLocation On|Off
        Default:  DocumentRootLayersStripLocation On
        Context:  server config, virtual host, <Location*

    Remove the path specified in <Location>, <LocationMatch> from the URI
    before searching for layered file.

    That allows to simplify the file hieratchy tree, eg.

        <Location "/images">
            DocumentRootLayersStripLocation On
        </Location>

        <Location "/images/company1">
            DocumentRootLayers company1/images default/images
        </Location>

        <Location "/images/company2">
            DocumentRootLayers company2/images default/images
        </Location>

    for following requests:

        /images/company1/headers/top.png 

        /images/company2/headers/top.png

    those paths would be searched:

       company1/images/headers/top.png default/images/headers/top.png 

       company2/images/headers/top.png default/images/headers/top.png

    but with "DocumentRootLayersStripLocation Off":

       company1/images/images/company1/headers/top.png default/images/images/company1/headers/top.png

       company2/images/images/company2/headers/top.png default/images/images/company2/headers/top.png

  DocumentRootLayers
        Syntax:   DocumentRootLayers dir-path1 [dir-path2 ... dir-pathN]
        Context:  server config, virtual host, <Location*

    Specify content layers to be used on top of "DocumentRoot".

    If the *dir-path** is not absolute it is assumed to be relative to
    "DocumentRoot".

    Directories are searched in order specified and first one containing the
    file is used.

    If file does not exists in any of them module falls back to
    "DocumentRoot".

SEE ALSO
    Module was created as a result of upgrade existing application from
    mod_perl1 to mod_perl2 and is a replacement for Apache::Layer.

AUTHOR
    Alex J. G. Burzyński <ajgb@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2010 by Alex J. G. Burzyński
    <ajgb@cpan.org>.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

