Resource Resolution Order

The order in which specific types of behavior or views load, from 301 redirects to 404s.

When a request is served by WebEngine, it reads the url path and attempts to match the url path to a content item resources. URL are checked against resource in a specific order, and will resolve the resource first if a match is found. If two resources share a URL path, then the one that loads first will resolve and the other is ignored.

Resource load order:

  1. Proxy (if configured). If url doesn't exist, it skips. ?toJSON urls ignore proxy
  2. Media Proxy (if configured) for /-/media/ urls
  3. Static files generated by Zesty.io: site.css and site.js
  4. Instant JSON API e.g. /-/instant/7-zyx-zyxzyc.json
  5. GQL API e.g. /-/gql/*
  6. Static files generated by Zesty.io: sitemap.xml, feed.xml, robots.txt
  7. Legacy JSON endpoints e.g. /-/custom/
  8. Well Known Files e.g. /.well-known/*
  9. Custom endpoints e.g. /custom/endpoints.json
  10. Legacy HTML endpoints e.g. /ajax/
  11. Content Models Views if a content item's meta path matches the request page e.g. /about/team/
  12. Wild Card Views e.g. /store/*/cool-shirt/
  13. 301 redirects
  14. 404 Pages e.g. when no resources match the url pattern

Base Directory Setting

Overview

Zesty.io will default all automated assets files to the root / directory unless the base directory setting has been added and set.

There is a setting on the instance with category:general key:base_directory with a directory set as its value e.g. /blog/

Base Directory and Zesty.io Auto-created Files

Once the Base Directory settings has a value the Zesty.io auto-created files listed below will be immediately affected.

Using the Base Directory setting with non-automated files

Other files created in the code editor such as custom endpoints must be manually named to follow the path of your choice. If you want content items to follow the same path as the Base Directory setting value, then a content model must exist with that path. For example, if you're using Zesty.io WebEngine only for your website's /blog/ subdirectory then you need to setup a content item as a placeholder with /blog/ as its URL and create the Base Directory setting (as shown below) with the value /blog/.

Adding the Base Directory Setting

The Base Directory setting can be added via API with the following JSON body:

{
    "category": "general",
    "keyFriendly": "Base Directory",
    "key": "base_directory",
    "value": "",
    "admin": false,
    "parselyAccess": false,
    "dataType": "text",
    "options": "",
    "tips": ""
}

If you know what value you want the base directory set to go ahead and add it to the JSON body under value.

Reserved Paths

Some path parts are reserved for security reasons. Any content item url path that includes these words will 404.

  • vendor
  • composer
  • package
  • package-lock
  • gulpfile
  • README