Home β€Ί AEM Fundamentals β€Ί Sling resolution cheatsheet

Sling resolution cheatsheet

Purpose: One-page lookup for URL decomposition, script selection and resolution debugging.

Who this page is for

AudienceWhy it matters to you
All engineersPin this next to your monitor for the first month

URL decomposition

/content/phi/plans/gold-hospital.compare.premium.html/2026/07?src=email
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”¬β”€β”˜β””β”€β”€β”¬β”€β”€β”˜β””β”€β”€β”€β”¬β”€β”€β”€β”˜
        resource path              selectors      ext   suffix   query

Script selection (inside the resolved component)

Given resourceType phi/components/planpage, request selectors compare.premium, extension html β€” candidates in priority order:

  1. compare/premium.html or compare.premium.html (all selectors)
  2. compare.html (first selector)
  3. planpage.html (component default)
  4. Same walk on each sling:resourceSuperType ancestor

More selector matches beat fewer; deeper (more specific) beats shallower.

Resolution debugging tools

ToolURLUse
Resolver console/system/console/jcrresolverTrace any URL β†’ resource + script
Recent requests/system/console/requestsFull decomposition of recent request processing
Servlet resolverappend .servletresolver.json-style checks via consoleWhich servlet would handle it

Gotchas

SymptomCause
Selector script ignoredScript name/extension mismatch, or resourceType actually different (check jcrresolver)
Wrong component renderssling:resourceType on the content node isn't what you think
Works on author, 404 on publishDispatcher filter or missing content/ACL on publish
Infinite variants cachedAny selector renders and caches β€” see Dispatcher security for locking down selectors

Quick navigation