---
title: "FE - frontend configuration"
manual: "TYPO3 Explained"
version: "11.5"
permalink: "https://docs.typo3.org/permalink/t3coreapi:typo3confvars-fe@11.5"
source: "Configuration/Typo3ConfVars/FE.rst"
rendered: "2026-10-21T15:30:00+00:00"
---

> [!WARNING]
> **Attention**
>
> TYPO3 v11 has reached end-of-life as of October 31th 2024 and
> is no longer being maintained. Use the version switcher on the top
> left of this page to select documentation for a supported version of TYPO3.
>
> Need more time before upgrading?
> You can purchase Extended Long Term Support (ELTS) for TYPO3 v11 here:
> [TYPO3 ELTS](https://typo3.com/services/extended-support-elts).

# FE - frontend configuration {#typo3confvars-fe}

The following configuration variables can be used to configure settings for
the TYPO3 frontend:

-   [addAllowedPaths](https://docs.typo3.org/permalink/t3coreapi:addallowedpaths@11.5)
-   [debug](https://docs.typo3.org/permalink/t3coreapi:debug@11.5)
-   [compressionLevel](https://docs.typo3.org/permalink/t3coreapi:compressionlevel@11.5)
-   [pageNotFoundOnCHashError](https://docs.typo3.org/permalink/t3coreapi:pagenotfoundonchasherror@11.5)
-   [pageUnavailable_force](https://docs.typo3.org/permalink/t3coreapi:pageunavailable-force@11.5)
-   [addRootLineFields](https://docs.typo3.org/permalink/t3coreapi:addrootlinefields@11.5)
-   [checkFeUserPid](https://docs.typo3.org/permalink/t3coreapi:checkfeuserpid@11.5)
-   [loginRateLimit](https://docs.typo3.org/permalink/t3coreapi:loginratelimit@11.5)
-   [loginRateLimitInterval](https://docs.typo3.org/permalink/t3coreapi:loginratelimitinterval@11.5)
-   [loginRateLimitIpExcludeList](https://docs.typo3.org/permalink/t3coreapi:loginratelimitipexcludelist@11.5)
-   [lockIP](https://docs.typo3.org/permalink/t3coreapi:lockip@11.5)
-   [lockIPv6](https://docs.typo3.org/permalink/t3coreapi:lockipv6@11.5)
-   [loginSecurityLevel](https://docs.typo3.org/permalink/t3coreapi:loginsecuritylevel@11.5)
-   [lifetime](https://docs.typo3.org/permalink/t3coreapi:lifetime@11.5)
-   [sessionTimeout](https://docs.typo3.org/permalink/t3coreapi:sessiontimeout@11.5)
-   [sessionDataLifetime](https://docs.typo3.org/permalink/t3coreapi:sessiondatalifetime@11.5)
-   [permalogin](https://docs.typo3.org/permalink/t3coreapi:permalogin@11.5)
-   [cookieDomain](https://docs.typo3.org/permalink/t3coreapi:cookiedomain@11.5)
-   [cookieName](https://docs.typo3.org/permalink/t3coreapi:cookiename@11.5)
-   [cookieSameSite](https://docs.typo3.org/permalink/t3coreapi:cookiesamesite@11.5)
-   [defaultUserTSconfig](https://docs.typo3.org/permalink/t3coreapi:defaultusertsconfig@11.5)
-   [defaultTypoScript_constants](https://docs.typo3.org/permalink/t3coreapi:defaulttyposcript-constants@11.5)
-   [defaultTypoScript_setup](https://docs.typo3.org/permalink/t3coreapi:defaulttyposcript-setup@11.5)
-   [additionalAbsRefPrefixDirectories](https://docs.typo3.org/permalink/t3coreapi:additionalabsrefprefixdirectories@11.5)
-   [enable_mount_pids](https://docs.typo3.org/permalink/t3coreapi:enable-mount-pids@11.5)
-   [hidePagesIfNotTranslatedByDefault](https://docs.typo3.org/permalink/t3coreapi:hidepagesifnottranslatedbydefault@11.5)
-   [eID_include](https://docs.typo3.org/permalink/t3coreapi:eid-include@11.5)
-   [disableNoCacheParameter](https://docs.typo3.org/permalink/t3coreapi:disablenocacheparameter@11.5)
-   [additionalCanonicalizedUrlParameters](https://docs.typo3.org/permalink/t3coreapi:additionalcanonicalizedurlparameters@11.5)
-   [cacheHash](https://docs.typo3.org/permalink/t3coreapi:cachehash@11.5)
-   [workspacePreviewLogoutTemplate](https://docs.typo3.org/permalink/t3coreapi:workspacepreviewlogouttemplate@11.5)
-   [versionNumberInFilename](https://docs.typo3.org/permalink/t3coreapi:versionnumberinfilename@11.5)
-   [contentRenderingTemplates](https://docs.typo3.org/permalink/t3coreapi:contentrenderingtemplates@11.5)
-   [ContentObjects](https://docs.typo3.org/permalink/t3coreapi:contentobjects@11.5)
-   [typolinkBuilder](https://docs.typo3.org/permalink/t3coreapi:typolinkbuilder@11.5)
-   [passwordHashing](https://docs.typo3.org/permalink/t3coreapi:passwordhashing@11.5)
-   [exposeRedirectInformation](https://docs.typo3.org/permalink/t3coreapi:exposeredirectinformation@11.5)

> [!NOTE]
> The configuration values listed here are keys in the global PHP array
> `$GLOBALS['TYPO3_CONF_VARS']['FE']`.
>
> This variable can be set in one of the following files:
>
> -   [typo3conf/LocalConfiguration.php](https://docs.typo3.org/permalink/t3coreapi:typo3confvars-localconfiguration@11.5)
> -   [typo3conf/AdditionalConfiguration.php](https://docs.typo3.org/permalink/t3coreapi:typo3confvars-additionalconfiguration@11.5)

## addAllowedPaths {#typo3confvars-fe-addallowedpaths}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['addAllowedPaths'\]**

    -   *Type:* list
    -   *Default:* ''

    Additional relative paths (comma-list) to allow TypoScript resources be in.
    Should be prepended with /. If not, then any path where the first part is
    like this path will match. That is myfolder/ , myarchive will match
    for example myfolder/, myarchive/, myarchive_one/, myarchive_2/ ...

    No check is done to see if this directory actually exists in the
    root of the site. Paths are matched by simply checking if these strings
    equals the first part of any TypoScript resource filepath.

    (See class template, function init() in
    `\TYPO3\CMS\Core\TypoScript\Parser\TypoScriptParser`)

## debug {#typo3confvars-fe-debug}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['debug'\]**

    -   *Type:* bool
    -   *Default:* false

    If enabled, the total parse time of the page is added as HTTP response
    header `X-TYPO3-Parsetime`. This can also be enabled/disabled via the
    TypoScript option `config.debug = 0`.

## compressionLevel {#typo3confvars-fe-compressionlevel}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['compressionLevel'\]**

    -   *Type:* int
    -   *Default:* 0

    Determines output compression of FE output. Makes output smaller but
    slows down the page generation depending on the compression level. Requires
    zlib in your PHP installation. Range 1-9, where 1 is least compression and
    9 is greatest compression. true as value will set the compression based on
    the PHP default settings (usually 5). Suggested and most optimal value is 5.

## pageNotFoundOnCHashError {#typo3confvars-fe-pagenotfoundonchasherror}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['pageNotFoundOnCHashError'\]**

    -   *Type:* bool
    -   *Default:* true

    If TRUE, a page not found call is made when cHash evaluation error occurs,
    otherwise caching is disabled and page output is displayed.

## pageUnavailable_force {#typo3confvars-fe-pageunavailable-force}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['pageUnavailable_force'\]**

    -   *Type:* bool
    -   *Default:* false

    If `TRUE`, every frontend page is shown as "unavailable". If the
    client matches [\[SYS\]\[devIPmask\]](https://docs.typo3.org/permalink/t3coreapi:typo3confvars-sys-devipmask@11.5), the page is
    shown as normal. This is useful during temporary site maintenance.

## addRootLineFields {#typo3confvars-fe-addrootlinefields}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['addRootLineFields'\]**

    -   *Type:* list
    -   *Default:* ''

    Comma-list of fields from the pages-table. These fields are added to the
    select query for fields in the rootline.

## checkFeUserPid {#typo3confvars-fe-checkfeuserpid}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['checkFeUserPid'\]**

    -   *Type:* bool
    -   *Default:* true

    If set, the pid of fe_user logins must be sent in the form as the field pid
    and then the user must be located in the pid. If you unset this, you should
    change the fe_users username eval-flag uniqueInPid to unique in $TCA.

    This will do `$TCA[fe_users][columns][username][config][eval]= nospace,lower,required,unique;`

## loginRateLimit {#typo3confvars-fe-loginratelimit}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['loginRateLimit'\]**

    -   *Type:* int
    -   *Default:* 5

    Maximum amount of login attempts for the time interval in
    [\[FE\]\[loginRateLimitInterval\]](https://docs.typo3.org/permalink/t3coreapi:typo3confvars-fe-loginratelimitinterval@11.5),
    before further login requests will be denied. Setting this value to
    `"0"` will disable login rate limiting.

## loginRateLimitInterval {#typo3confvars-fe-loginratelimitinterval}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['loginRateLimitInterval'\]**

    -   *Type:* string, PHP relative format
    -   *Default:* '15 minutes'
    -   *allowedValues:* '1 minute', '5 minutes', '15 minutes', '30 minutes'

    Allowed time interval for the configured rate limit. Individual values
    using
    [PHP relative formats](https://www.php.net/manual/de/datetime.formats.relative.php)
    can be set in `AdditionalConfiguration.php`.

## loginRateLimitIpExcludeList {#typo3confvars-fe-loginratelimitipexcludelist}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['loginRateLimitIpExcludeList'\]**

    -   *Type:* string
    -   *Default:* ''

    IP-numbers (with `*`-wildcards) that are excluded from rate limiting.
    Syntax similar to [\[BE\]\[IPmaskList\]](https://docs.typo3.org/permalink/t3coreapi:typo3confvars-be-ipmasklist@11.5).
    An empty value disables the exclude list check.

## lockIP {#typo3confvars-fe-lockip}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['lockIP'\]**

    -   *Type:* int
    -   *Default:* 0
    -   *allowedValues:* 1 0 Default Do not lock Frontend User sessions to their IP address at all 1 Use the first part of the visitors IPv4 address (for example "192.") as part of the session locking of Frontend Users 2 Use the first two parts of the visitors IPv4 address (for example "192.168") as part of the session locking of Frontend Users 3 Use the first three parts of the visitors IPv4 address (for example "192.168.13") as part of the session locking of Frontend Users 4 Use the visitors full IPv4 address (for example "192.168.13.84") as part of the session locking of Frontend Users (highest security)

    If activated, Frontend Users are locked to (a part of) their public IP
    (`$_SERVER[REMOTE_ADDR]`) for their session, if REMOTE_ADDR is an
    IPv4-address. Enhances security but may throw off users that may change IP
    during their session (in which case you can lower it). The integer indicates
    how many parts of the IP address to include in the check for the session.

    Have also a look into the [security guidelines](https://docs.typo3.org/permalink/t3coreapi:security-global-typo3-options-lockip@11.5).

## lockIPv6 {#typo3confvars-fe-lockipv6}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['lockIPv6'\]**

    -   *Type:* int
    -   *Default:* 0
    -   *allowedValues:* 1 0 Default: Do not lock Backend User sessions to their IP address at all 1 Use the first block (16 bits) of the editors IPv6 address (for example "2001") as part of the session locking of Backend Users 2 Use the first two blocks (32 bits) of the editors IPv6 address (for example "20010db8") as part of the session locking of Backend Users 3 Use the first three blocks (48 bits) of the editors IPv6 address (for example "20010db885a3") as part of the session locking of Backend Users 4 Use the first four blocks (64 bits) of the editors IPv6 address (for example "20010db885a308d3") as part of the session locking of Backend Users 5 Use the first five blocks (80 bits) of the editors IPv6 address (for example "20010db885a308d31319") as part of the session locking of Backend Users 6 Use the first six blocks (96 bits) of the editors IPv6 address (for example "20010db885a308d313198a2e") as part of the session locking of Backend Users 7 Use the first seven blocks (112 bits) of the editors IPv6 address (for example "20010db885a308d313198a2e0370") as part of the session locking of Backend Users 8 Use the visitors full IPv6 address (for example "20010db885a308d313198a2e03707344") as part of the session locking of Backend Users (highest security)

    If activated, Frontend Users are locked to (a part of) their public IP (
    `$_SERVER[REMOTE_ADDR]`) for their session, if REMOTE_ADDR is an
    IPv6-address. Enhances security but may throw off users that may change IP
    during their session (in which case you can lower it).
    The integer indicates how many parts of the IP address to include in the check for the session.

## loginSecurityLevel {#typo3confvars-fe-loginsecuritylevel}

<!-- TODO: no Markdown rendering for "deprecated" -->

This option got removed with version 11.3. The only possible
value has been 'normal'. This behaviour stays unchanged.  When this option
has been set in your LocalConfiguration.php
or AdditionalConfiguration.php files, they are automatically
removed when accessing the admin tool or system maintenance area.

## lifetime {#typo3confvars-fe-lifetime}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['lifetime'\]**

    -   *Type:* int
    -   *Default:* 0

    If greater then 0 and the option permalogin is greater or equal 0, the
    cookie of FE users will have a lifetime of the number of seconds this
    value indicates. Otherwise it will be a session cookie (deleted when
    browser is shut down). Setting this value to 604800 will result in automatic
    login of FE users during a whole week, 86400 will keep the FE users logged in
    for a day.

## sessionTimeout {#typo3confvars-fe-sessiontimeout}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['sessionTimeout'\]**

    -   *Type:* int
    -   *Default:* 6000

    Server side session timeout for frontend users in seconds. Will
    be overwritten by the lifetime property if the lifetime is longer.

## sessionDataLifetime {#typo3confvars-fe-sessiondatalifetime}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['sessionDataLifetime'\]**

    -   *Type:* int
    -   *Default:* 86400

    If greater then 0, the session data of an anonymous session will timeout
    and be removed after the number of seconds given
    (86400 seconds represents 24 hours).

## permalogin {#typo3confvars-fe-permalogin}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['permalogin'\]**

    -   *Type:* text
    -   *Default:* 0

    -   **-1**

        Permanent login for FE users is disabled

    -   **0**

        By default permalogin is disabled for FE users but can be enabled by a
        form control in the login form.

    -   **1**

        Permanent login is by default enabled but can be disabled by a form
        control in the login form.

    -   **2**

        Permanent login is forced to be enabled.

    In any case, permanent login is only possible if
    [\[FE\]\[lifetime\]](https://docs.typo3.org/permalink/t3coreapi:typo3confvars-fe-lifetime@11.5) lifetime is greater then 0.

## cookieDomain {#typo3confvars-fe-cookiedomain}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['cookieDomain'\]**

    -   *Type:* text
    -   *Default:* ''

    Same as `$TYPO3_CONF_VARS[SYS][cookieDomain]<_typo3ConfVars_sys_cookieDomain>`
    but only for FE cookies. If empty, `$TYPO3_CONF_VARS[SYS][cookieDomain]`
    value will be used.

## cookieName {#typo3confvars-fe-cookiename}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['cookieName'\]**

    -   *Type:* text
    -   *Default:* 'fe_typo_user'

    Sets the name for the cookie used for the front-end user session

## cookieSameSite {#typo3confvars-fe-cookiesamesite}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['cookieSameSite'\]**

    -   *Type:* text
    -   *Default:* 'lax'
    -   *allowedValues:* 1 lax Cookies set by TYPO3 are only available for the current site, third-party integrations are not allowed to read cookies, except for links and simple HTML forms strict Cookies sent by TYPO3 are only available for the current site, never shared to other third-party packages none Allow cookies set by TYPO3 to be sent to other sites as well, please note - this only works with HTTPS connections

    Indicates that the cookie should send proper information where the cookie
    can be shared (first-party cookies vs. third-party cookies) in TYPO3 Frontend.

## defaultUserTSconfig {#typo3confvars-fe-defaultusertsconfig}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['defaultUserTSconfig'\]**

    -   *Type:* multiline
    -   *Default:* ''

    Enter lines of default frontend user/group TSconfig.

## defaultTypoScript_constants {#typo3confvars-fe-defaulttyposcript-constants}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['defaultTypoScript_constants'\]**

    -   *Type:* multiline
    -   *Default:* ''

    Enter lines of default TypoScript, constants-field.

## defaultTypoScript_setup {#typo3confvars-fe-defaulttyposcript-setup}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['defaultTypoScript_setup'\]**

    -   *Type:* multiline
    -   *Default:* ''

    Enter lines of default TypoScript, setup-field.

## additionalAbsRefPrefixDirectories {#typo3confvars-fe-additionalabsrefprefixdirectories}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['additionalAbsRefPrefixDirectories'\]**

    -   *Type:* text
    -   *Default:* ''

    Enter additional directories to be prepended with absRefPrefix.
    Directories must be comma-separated. TYPO3 already prepends the following
    directories typo3/, typo3temp/, typo3conf/ext/ and all local storages

## enable_mount_pids {#typo3confvars-fe-enable-mount-pids}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['enable_mount_pids'\]**

    -   *Type:* bool
    -   *Default:* true

    If enabled, the mount_pid feature allowing symlinks in the page tree
    (for frontend operation) is allowed.

## hidePagesIfNotTranslatedByDefault {#typo3confvars-fe-hidepagesifnottranslatedbydefault}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['hidePagesIfNotTranslatedByDefault'\]**

    -   *Type:* bool
    -   *Default:* false

    If enabled, pages that have no translation will be hidden by default.
    Basically this will inverse the effect of the page localization setting
    "Hide page if no translation for current language exists" to
    "Show page even if no translation exists"

## eID_include {#typo3confvars-fe-eid-include}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['eID_include'\]**

    -   *Type:* array
    -   *Default:* \[\]

    -   **Array of key/value pairs where the key is `tx_[ext]_[optional suffix]`**

        and value is relative filename of class to include.
        Key is used as "?eID=" for `\TYPO3\CMS\Frontend\Http\RequestHandlerRequestHandler`
        to include the code file which renders the page from that point.

    (Useful for functionality that requires a low initialization footprint,
    for example frontend Ajax applications)

## disableNoCacheParameter {#typo3confvars-fe-disablenocacheparameter}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['disableNoCacheParameter'\]**

    -   *Type:* bool
    -   *Default:* false

    If set, the no_cache request parameter will become ineffective.
    This is currently still an experimental feature and will require a website
    only with plugins that dont use this parameter. However, using
    "&amp;no_cache=1" should be avoided anyway because there are better ways to
    disable caching for a certain part of the website
    (see `COA_INT/USER_INT<t3tsref:cobj-coa-int>`).

## additionalCanonicalizedUrlParameters {#typo3confvars-fe-additionalcanonicalizedurlparameters}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['additionalCanonicalizedUrlParameters'\]**

    -   *Type:* array
    -   *Default:* \[\]

    The given parameters will be included when calculating canonicalized URL

## cacheHash {#typo3confvars-fe-cachehash}

### cachedParametersWhiteList {#typo3confvars-fe-cachehash-cachedparameterswhitelist}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['cacheHash'\]\['cachedParametersWhiteList'\]**

    -   *Type:* array
    -   *Default:* \[\]

    Only the given parameters will be evaluated in the cHash calculation.
    Example:

    **typo3conf/AdditionalConfiguration.php**

    ```php
    $GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['cachedParametersWhiteList'][] = 'tx_news_pi1[uid]';
    ```

### requireCacheHashPresenceParameters {#typo3confvars-fe-cachehash-requirecachehashpresenceparameters}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['cacheHash'\]\['requireCacheHashPresenceParameters'\]**

    -   *Type:* array
    -   *Default:* \[\]

    Configure Parameters that require a cHash. If no cHash is given but one of
    the parameters are set, then TYPO3 triggers the configured cHash Error
    behaviour

### excludedParameters {#typo3confvars-fe-cachehash-excludedparameters}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['cacheHash'\]\['excludedParameters'\]**

    -   *Type:* array
    -   *Default:* \['L', 'pk_campaign', 'pk_kwd', 'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'gclid', 'fbclid'\]

    -   **The given parameters will be ignored in the cHash calculation.**

        Example:

    **typo3conf/AdditionalConfiguration.php**

    ```php
    $GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']['excludedParameters'] = ['L','tx_search_pi1[query]'];
    ```

### excludedParametersIfEmpty {#typo3confvars-fe-cachehash-excludedparametersifempty}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['cacheHash'\]\['excludedParametersIfEmpty'\]**

    -   *Type:* array
    -   *Default:* \[\]

    Configure Parameters that are only relevant for the cHash if there's an
    associated value available. Set excludeAllEmptyParameters to true to skip
    all empty parameters.

### excludeAllEmptyParameters {#typo3confvars-fe-cachehash-excludeallemptyparameters}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['cacheHash'\]\['excludeAllEmptyParameters'\]**

    -   *Type:* bool
    -   *Default:* false

    If true, all parameters which are relevant for cHash are only considered
    if they are non-empty.

### enforceValidation {#typo3confvars-fe-cachehash-enforcevalidation}

<!-- TODO: no Markdown rendering for "versionadded" -->

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['cacheHash'\]\['enforceValidation'\]**

    -   *Type:* bool
    -   *Default:* false (for existing installations), true (for new installations)

    If this option is enabled, the same validation is used to calculate a
    "cHash" value as when a valid or invalid "cHash" parameter is given to a
    request, even when no "cHash" is given.

    > [!NOTE]
    > The option is disabled for existing installations, but enabled for new
    > installations. It is also highly recommended to enable this option in
    > your existing installations as well.

    **Details:**

    Since TYPO3 v9 and the [PSR-15 middleware concept](https://docs.typo3.org/permalink/t3coreapi:request-handling@11.5),
    cHash validation has been moved outside of plugins and rendering code inside
    a validation middleware to check if a given "cHash" acts as a signature of
    other query parameters in order to use a cached version of a frontend page.

    However, the check only provided information about an invalid "cHash" in the
    query parameters. If no "cHash" was given, the only option was to add a
    "required list" (global TYPO3 configuration option
    [requireCacheHashPresenceParameters](https://docs.typo3.org/permalink/t3coreapi:typo3confvars-fe-cachehash-requirecachehashpresenceparameters@11.5)),
    but not based on the final
    [excludedParameters](https://docs.typo3.org/permalink/t3coreapi:typo3confvars-fe-cachehash-excludedparameters@11.5)
    for the cache hash calculation of the given query parameters.

## workspacePreviewLogoutTemplate {#typo3confvars-fe-workspacepreviewlogouttemplate}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['workspacePreviewLogoutTemplate'\]**

    -   *Type:* text
    -   *Default:* ''

    If set, points to an HTML file relative to the TYPO3_site root which will be
    read and outputted as template for this message. Example
    `fileadmin/templates/template_workspace_preview_logout.html`.

    Inside you can put the marker `%1$s` to insert the URL to go back to.
    Use this in `<a href="%1$s">Go back...</a>` links.

## versionNumberInFilename {#typo3confvars-fe-versionnumberinfilename}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['versionNumberInFilename'\]**

    -   *Type:* dropdown
    -   *Default:* 'querystring'
    -   *allowedValues:* 1 '' "Do not include the version/timestamp of the file at all" 'embed' Include the timestamp of the last modification timestamp of files embedded in the filename - for example `filename.1269312081.js` 'querystring' Default - Append the last modification timestamp of the file as query string for example `filename.js?1269312081`

    Allows to automatically include a version number (timestamp of the file)
    to referred CSS and JS filenames on the rendered page. This will make
    browsers and proxies reload the files if they change (thus avoiding
    caching issues).

    **IMPORTANT** embed requires extra `.htaccess` rules to work
    (please refer to the `root-htaccess` file shipped with TYPO3 in
    `typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles`)

## contentRenderingTemplates {#typo3confvars-fe-contentrenderingtemplates}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['contentRenderingTemplates'\]**

    -   *Type:* array
    -   *Default:* \[\]

    Array to define the TypoScript parts that define the main content rendering.

    Extensions like `fluid_styled_content` provide content rendering
    templates. Other extensions like `felogin` or `indexed search`
    extend these templates and their TypoScript parts are added directly after
    the content templates.

    See `EXT:fluid_styled_content/ext_localconf.php` and
    `EXT:frontend/Classes/TypoScript/TemplateService.php`

## ContentObjects {#typo3confvars-fe-contentobjects}

-   **ContentObjects**

    -   *Type:* array
    -   *Path:* $GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]
    -   *Default:* \[\]

    Array to register ContentObjects (cObjects) like `TEXT` or
    `HMENU` within `ext_localconf.php`,
    see `EXT:frontend/ext_localconf.php`

## typolinkBuilder {#typo3confvars-fe-typolinkbuilder}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['typolinkBuilder'\]**

    -   *Type:* array

    Matches the LinkService implementations for generating URLs and link texts
    via typolink. This configuration value can be used to register a
    [custom link builder](https://docs.typo3.org/permalink/t3coreapi:tutorial-typolink-builder@11.5) for the frontend
    generation of links.

    **Default value of $GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['typolinkBuilder'\]**

    ```php
    [
        'page' => \TYPO3\CMS\Frontend\Typolink\PageLinkBuilder::class,
        'file' => \TYPO3\CMS\Frontend\Typolink\FileOrFolderLinkBuilder::class,
        'folder' => \TYPO3\CMS\Frontend\Typolink\FileOrFolderLinkBuilder::class,
        'url' => \TYPO3\CMS\Frontend\Typolink\ExternalUrlLinkBuilder::class,
        'email' => \TYPO3\CMS\Frontend\Typolink\EmailLinkBuilder::class,
        'record' => \TYPO3\CMS\Frontend\Typolink\DatabaseRecordLinkBuilder::class,
        'telephone' => \TYPO3\CMS\Frontend\Typolink\TelephoneLinkBuilder::class,
        'unknown' => \TYPO3\CMS\Frontend\Typolink\LegacyLinkBuilder::class,
    ]
    ```

## passwordHashing {#typo3confvars-fe-passwordhashing}

### className {#typo3confvars-fe-passwordhashing-classname}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['passwordHashing'\]\['className'\]**

    -   *Type:* string
    -   *Default:* `\TYPO3\CMS\Core\Crypto\PasswordHashing\Argon2iPasswordHash::class`
    -   *allowedValues:* 1 `\TYPO3\CMS\Core\Crypto\PasswordHashing\Argon2iPasswordHash::class` Good password hash mechanism. Used by default if available. `\TYPO3\CMS\Core\Crypto\PasswordHashing\Argon2idPasswordHash::class` Good password hash mechanism. `\TYPO3\CMS\Core\Crypto\PasswordHashing\BcryptPasswordHash::class` Good password hash mechanism. `\TYPO3\CMS\Core\Crypto\PasswordHashing\Pbkdf2PasswordHash::class` Fallback hash mechanism if argon and bcrypt are not available. `\TYPO3\CMS\Core\Crypto\PasswordHashing\PhpassPasswordHash::class` Fallback hash mechanism if none of the above are available.

### options {#typo3confvars-fe-passwordhashing-options}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['passwordHashing'\]\['options'\]**

    -   *Type:* array
    -   *Default:* \[\]

    Special settings for specific hashes.

## exposeRedirectInformation {#typo3confvars-fe-exposeredirectinformation}

-   **$GLOBALS\['TYPO3_CONF_VARS'\]\['FE'\]\['exposeRedirectInformation'\]**

    -   *Type:* bool
    -   *Default:* false

    If set, redirects executed by TYPO3 publicly expose the page ID in the HTTP
    header. As this is an internal information about the TYPO3 system, it should
    only be enabled for debugging purposes.
