FindPublishedContentAndTemplate()
This method is called on the "PublishedContentRequest.PrepareRequest()" method. We discuss shortly what this method is doing:
- FindPublishedContent ()
 - Handles redirects
 - HandlePublishedContent()
 - FindTemplate()
 - FollowExternalRedirect()
 - HandleWildcardDomains()
 
HandlePublishedContent
- No content?
 - Run the LastChanceFinder
 - Is an IContentFinder, resolved by ContentLastChanceFinderResolver
 - By default, is null (= ugly 404)
 - Follow internal redirects
 - Take care of infinite loops
 - Ensure user has access to published content
 - Else redirect to login or access denied published content
 - Loop while there is no content
 - Take care of infinite loops
 
FindTemplate
- Use altTemplate if
 - Initial content
 - Internal redirect content, and InternalRedirectPreservesTemplate is true
 - No alternate template?
 - Use the current template if one has already been selected
 - Else use the template specified for the content, if any
 - Alternate template?
- Use the alternate template, if any
 - Else use what’s already there: a template, else none
 
 - Alternate template is used only if displaying the intended content
- Except for internal redirects
 - If you enable InternalRedirectPreservesTemplate
 - Which is false by default
 
 - Alternate template replaces whatever template the finder might have set
- ContentFinderByNiceUrlAndTemplate
 - /path/to/page/template1?altTemplate=template2  template2
 
 - Alternate template does not falls back to the specified template for the content
- /path/to/page?altTemplate=missing  no template
 - Even if the page has a template
 
 - But preserves whatever template the finder might have set
- /path/to/page/template1?altTemplate=missing  template1
 
 - Yes, these rules are arbitrary… feedback? Get to the Dev Group!
 
FollowExternalRedirect()
- Content.GetPropertyValue
("umbracoRedirect")  - If it’s there, sets the published content request to redirect to the content
 - Will trigger an external (browser) redirect
 
HandleWildcardDomains()

- Finds the deepest wildcard domain between
 - Domain root (or top)
 - Request’s published content
 - If found, updates the request’s culture accordingly
 
This implements separation between hostnames and cultures