Мне было поручено изучить возможность хранения файлов .cfm за пределами корневого веб-сайта в качестве дополнительной меры безопасности. (Я говорю не о CFC, а о файлах, которые будут отображаться в строке URL.)
Я подумал, что могу использовать для этого свойства OnRequest() в Application.cfc, но не повезло.
Я пробовал это:
<cffunction name="OnRequest" access="public" returntype="void" output="true">
<cfargument name="TargetPage" type="string" required="true"/>
<cfinclude template="C:/test#arguments.TargetPage#"/>
<cfreturn/>
</cffunction>
Затем я вставил test.cfm
внутрь C:\test
и попытался http://localhost/test.cfm
. Это дает мне ошибку «файл не найден».
Затем я создал сопоставление ColdFusion с C:\test
под названием «test» и изменил свой CFINCLUDE следующим образом:
<cfinclude template="/test#arguments.TargetPage#"/>
К сожалению, я получил ту же ошибку.
Итак, возможно ли то, что я ищу? (Windows Server 2008 и IIS, если это имеет значение. ColdFusion 9.)
Я знаю, что могу поместить CFINCLUDE в свой index.cfm и передавать URL-адреса типа http://www.example.com/?file=test.cfm
, но я бы предпочел этого не делать.
Ну вот кое-что: если я помещу пустой test.cfm
в свой веб-корень, это сработает. Очевидно, я бы не стал ставить пустые заглушки для каждого из моих файлов (которых для этого проекта будет сотни).