# Official VirtualHost configuration for Apache 2.2. template
## Deprecated, please plan your move to Apache 2.4 or Nginx
# See Readme.md for how to generate your config manually, or in automated deployments.
# Note: This is meant to be manually tailored for your needs, expires headers might for instance not work for your dev setup.

# NameVirtualHost %IP_ADDRESS%

<VirtualHost %IP_ADDRESS%:%PORT%>
    ServerName %HOST_NAME%
    ServerAlias %HOST_ALIAS%
    DocumentRoot %BASEDIR%/web
    DirectoryIndex app.php

    # Request size limit in bytes, 0 to disable
    LimitRequestBody %BODY_SIZE_LIMIT%

    # Request timeout limit in seconds, 0 to disable
    TimeOut %TIMEOUT%

    # Enabled for Dev environment
    #LogLevel debug

    # "web" folder is what we expose to the world, all rewrite rules further down is relative to it.
    <Directory %BASEDIR%/web>
        # If using php configured in FastCGI mode, you might also need to add "ExecCGI" to the line below
        Options FollowSymLinks
        AllowOverride None
        # Depending on your global Apache settings, you may need to uncomment and adapt:
        #Allow from all
    </Directory>

    ## eZ Platform/Symfony ENVIRONMENT variables, for customizing app.php* execution
    # * Only SYMFONY_ENV and SYMFONY_DEBUG supported by console command, rest are eZ Platform features in app.php.

    # Environment.
    # Possible values: "prod" and "dev" out-of-the-box, other values possible with proper configuration
    # Defaults to "prod" if omitted (uses SetEnvIf so value can be used in rewrite rules)
    #if[SYMFONY_ENV] SetEnvIf Request_URI ".*" SYMFONY_ENV=%SYMFONY_ENV%

    # Optional: Whether to use debugging.
    # Possible values: 0, 1 or ""
    # Defaults to enabled if SYMFONY_ENV is set to "dev" if env value is omitted or empty
    #if[SYMFONY_DEBUG] SetEnv SYMFONY_DEBUG "%SYMFONY_DEBUG%"

    # Optional: Whether to use custom ClassLoader (autoloader) file
    # Needs to be a valid path relative to root web/ directory
    # Defaults to bootstrap.php.cache, or autoload.php in debug if env value is omitted or empty
    #if[SYMFONY_CLASSLOADER_FILE] SetEnv SYMFONY_CLASSLOADER_FILE "%SYMFONY_CLASSLOADER_FILE%"

    # Optional: Whether to use Symfony's builtin HTTP Caching Proxy.
    # Disable it if you are using an external reverse proxy (e.g. Varnish)
    # Possible values: 0, 1 or ""
    # Defaults to disabled if SYMFONY_ENV is set to "dev" or SYMFONY_TRUSTED_PROXIES is set,
    # and if this env value is omitted or empty
    #if[SYMFONY_HTTP_CACHE] SetEnv SYMFONY_HTTP_CACHE "%SYMFONY_HTTP_CACHE%"

    # Optional: Whether to use custom HTTP Cache class if SYMFONY_HTTP_CACHE is enabled
    # Value must be a autoloadable cache class
    # Defaults to to use provided "AppCache" if env value is omitted or empty
    #if[SYMFONY_HTTP_CACHE_CLASS] SetEnv SYMFONY_HTTP_CACHE_CLASS "%SYMFONY_HTTP_CACHE_CLASS%"

    # Optional: Defines the proxies to trust
    # Needed when using Varnish as proxy, if so disable SYMFONY_HTTP_CACHE.
    # Separate entries by a comma, example: "proxy1.example.com,proxy2.example.org"
    # Defaults to not be set if env value is omitted or empty
    #if[SYMFONY_TRUSTED_PROXIES] SetEnv SYMFONY_TRUSTED_PROXIES "%SYMFONY_TRUSTED_PROXIES%"

    <IfModule mod_rewrite.c>
        RewriteEngine On

        # For FastCGI mode or when using PHP-FPM, to get basic auth working.
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

        # Cluster/streamed files rewrite rules. Enable on cluster with DFS as a binary data handler
        RewriteCond %{ENV:BINARY_DATA_HANDLER} "dfs"
        RewriteRule ^/var/([^/]+/)?storage/images(-versioned)?/.* /app.php [L]

        RewriteRule ^/var/([^/]+/)?storage/images(-versioned)?/.* - [L]

        # Makes it possible to placed your favicon and robots.txt at the root of your web folder
        RewriteRule ^/favicon\.ico - [L]
        RewriteRule ^/robots\.txt - [L]

        # The following rules are needed to correctly display bundle and project assets
        RewriteRule ^/bundles/ - [L]
        RewriteRule ^/assets/ - [L]

        # Additional Assetic rules for environments different from dev,
        # remember to run php app/console assetic:dump --env=prod
        RewriteCond %{ENV:SYMFONY_ENV} !^(dev)
        RewriteRule ^/(css|js|fonts?)/.*\.(css|js|otf|eot|ttf|svg|woff) - [L]

        # Prevent access to website with direct usage of app.php in URL
        RewriteRule ^/(.+/)?app\.php - [R=404,L]

        RewriteRule .* /app.php
    </IfModule>

    # Everything below is optional to improve performance by forcing
    # clients to cache image and design files, change the expires time
    # to suite project needs.
    <IfModule mod_expires.c>
        <LocationMatch "^/var/[^/]+/storage/images/.*">
            # eZ Platform appends the version number to image URL (ezimage
            # datatype) so when an image is updated, its URL changes too
            ExpiresActive on
            ExpiresDefault "now plus 10 years"
        </LocationMatch>
    </IfModule>
</VirtualHost>
