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.