tracker issue : CF-3560929

select a category, or use search below
(searches all categories and all time range)
Title:

Going to a url formed like this: c.cfm/test/test.cfm returns a coldfusion.runtime.TemplateNotFoundException

| View in Tracker

Status/Resolution/Reason: Closed/Fixed/

Reporter/Name(from Bugbase): Michael Schmidt / Michael Schmidt (Michael.Schmidt.lmco)

Created: 05/15/2013

Components: General Server

Versions: 10.0

Failure Type: Non Functioning

Found In Build/Fixed In Build: Final / CF10_Update14

Priority/Frequency: Critical / All users will encounter

Locale/System: English / Win All

Vote Count: 0

Problem Description:
In CF9 and before we were able to go to a url:
http://example.com/c.cfm/test/test.cfm
 with c.cfm existing on the server as a coldfusion page.  We were able to process the requirements and serve up any page successfully, just like going to http://example.com/c.cfm/test/test and http://example.com/c.cfm/test/test.cfm/test.

Steps to Reproduce:
Create a page: c.cfm on it just dump cgi variables <cfdump var="#CGI#">

Navigate to the page in the following ways, and note the differences:
c.cfm
c.cfm/test
c.cfm/test/test.cfm
c.cfm/test/test.cfm/
c.cfm/test/test.cfc
c.cfm/test/test.cfc/


Actual Result:
All work except 

c.cfm/test/test.cfm
c.cfm/test/test.cfc
return coldfusion.runtime.TemplateNotFoundException

Expected Result:
All to work appropriately

Any Workarounds:
None known

----------------------------- Additional Watson Details -----------------------------

Watson Bug ID:	3560929

External Customer Info:
External Company:  
External Customer Name: Michael.Schmidt.lmco
External Customer Email:  
External Test Config: My Hardware and Environment details:

Attachments:

Comments:

I have found a "hack-ish" work around ... In the Application.cfc utilize the OnMissingTemplate method like so: <cffunction name="onMissingTemplate"> <cfargument name="targetPage" required=true /> <cfset var filename = ""> <cfsetting showdebugoutput="no"> <cfset var thisDir = ReplaceNoCase(getCurrentTemplatePath(), "Application.cfc", "")> <cfset var reqPath = ReplaceNoCase(CGi.cf_template_path, thisDir, "")> <cfset reqPath = ReplaceNoCase(reqPath, "\", "/", "ALL")> <cfset var elms = ListToArray(reqPath , "/")> <cfset var itms = []> <cfloop array="#elms#" index="local.ndx"> <cfset local.Ext = ""> <cfif ListLen(ndx, ".") gt 0> <cfset local.ext = Lcase(ListLast(ndx, "."))> </cfif> <cfset arrayAppend(itms, ndx)> <cfif ext eq "cfm"> <cfset local.filePath2 = ArrayToList(itms, "/")> <cfif FileExists(thisDir & filePath2)> <cfset REQUEST.CGI = {}> <cfset var remainingFilePath = ReplaceNoCase(reqPath, filePath2, "")> <cfset Request.CGI.PATH_INFO = remainingFilePath> <cfset Request.CGI.SCRIPT_NAME = ReplaceNoCase(CGI.SCRIPT_NAME, Request.CGI.path_info, "")> <cfinclude template="#filePath2#"> <cfreturn true /> <cfelse> </cfif> <cfbreak> </cfif> </cfloop> </cffunction> Then check for the existence of Request.CGI when you are checking your cgi variables... and utilize whichever one appropriately.
Comment by External U.
15414 | May 16, 2013 09:13:05 AM GMT