<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<remove name="X-Powered-By" />
<add name="Access-Control-Allow-Credentials" value="true" />
<add name="Access-Control-Allow-Methods" value="DELETE, GET, OPTIONS, POST, PUT" />
<add name="Access-Control-Max-Age" value="600" />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With" />
<add name="Api-Version" value="2" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="asp_as_html" />
<remove name="asp_as_htm" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="DELETE,GET,OPTIONS,POST,PUT" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="asp_as_html" path="*.html" verb="DELETE,GET,OPTIONS,POST,PUT" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" />
<add name="asp_as_htm" path="*.htm" verb="DELETE,GET,OPTIONS,POST,PUT" modules="IsapiModule" scriptProcessor="%windir%\system32\inetsrv\asp.dll" />
</handlers>
<modules>
<remove name="WebDAVModule" />
</modules>
<security>
<requestFiltering>
<verbs allowUnlisted="false">
<add verb="DELETE" allowed="true" />
<add verb="GET" allowed="true" />
<add verb="OPTIONS" allowed="true" />
<add verb="POST" allowed="true" />
<add verb="PUT" allowed="true" />
</verbs>
<fileExtensions>
<add fileExtension=".cfm" allowed="true" />
<remove fileExtension=".cfm" />
<add fileExtension=".cfc" allowed="true" />
<remove fileExtension=".cfc" />
</fileExtensions>
</requestFiltering>
</security>
<defaultDocument>
<files>
<clear />
<add value="index.cfm" />
</files>
</defaultDocument>
<directoryBrowse enabled="true" />
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<rewrite>
<outboundRules>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
<rules>
<rule name="General Level 1" stopProcessing="true">
<match url="^([A-Za-z][A-Za-z0-9\-_]+)(/)?$" ignoreCase="false" />
<action type="Rewrite" url="/index.cfm?level1={R:1}" appendQueryString="true" />
<conditions>
<add input="{SCRIPT_FILENAME}" matchType="IsFile" negate="true" />
<add input="{PATH_INFO}" pattern="^/rest(/)?$" ignoreCase="false" negate="true" />
</conditions>
</rule>
<rule name="General Level 2" stopProcessing="true">
<match url="^([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)(/)?$" ignoreCase="false" />
<action type="Rewrite" url="/index.cfm?level1={R:1}&level2={R:2}" appendQueryString="true" />
<conditions>
<add input="{SCRIPT_FILENAME}" matchType="IsFile" negate="true" />
<add input="{PATH_INFO}" pattern="^/rest/([A-Za-z][A-Za-z0-9\-_]+)(/)?$" ignoreCase="false" negate="true" />
</conditions>
</rule>
<rule name="General Level 3" stopProcessing="true">
<match url="^([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)(/)?$" ignoreCase="false" />
<action type="Rewrite" url="/index.cfm?level1={R:1}&level2={R:2}&level3={R:3}" appendQueryString="true" />
<conditions>
<add input="{SCRIPT_FILENAME}" matchType="IsFile" negate="true" />
<add input="{PATH_INFO}" pattern="^/rest/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)(/)?$" ignoreCase="false" negate="true" />
</conditions>
</rule>
<rule name="General Level 4" stopProcessing="true">
<match url="^([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)(/)?$" ignoreCase="false" />
<action type="Rewrite" url="/index.cfm?level1={R:1}&level2={R:2}&level3={R:3}&level4={R:4}" appendQueryString="true" />
<conditions>
<add input="{SCRIPT_FILENAME}" matchType="IsFile" negate="true" />
<add input="{PATH_INFO}" pattern="^/rest/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)(/)?$" ignoreCase="false" negate="true" />
</conditions>
</rule>
<rule name="General Level 5" stopProcessing="true">
<match url="^([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)(/)?$" ignoreCase="false" />
<action type="Rewrite" url="/index.cfm?level1={R:1}&level2={R:2}&level3={R:3}&level4={R:4}&level5={R:5}" appendQueryString="true" />
<conditions>
<add input="{SCRIPT_FILENAME}" matchType="IsFile" negate="true" />
<add input="{PATH_INFO}" pattern="^/rest/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)/([A-Za-z][A-Za-z0-9\-_]+)(/)?$" ignoreCase="false" negate="true" />
</conditions>
</rule>
</rules>
</rewrite>
<httpErrors errorMode="Custom">
<remove statusCode="400" />
<error statusCode="400" path="/error.cfm" responseMode="ExecuteURL" />
<remove statusCode="401" />
<error statusCode="401" path="/error.cfm" responseMode="ExecuteURL" />
<remove statusCode="402" />
<error statusCode="402" path="/error.cfm" responseMode="ExecuteURL" />
<remove statusCode="403" />
<error statusCode="403" path="/error.cfm" responseMode="ExecuteURL" />
<remove statusCode="404" />
<error statusCode="404" path="/error.cfm" responseMode="ExecuteURL" />
<remove statusCode="405" />
<error statusCode="405" path="/error.cfm" responseMode="ExecuteURL" />
<remove statusCode="406" />
<error statusCode="406" path="/error.cfm" responseMode="ExecuteURL" />
<remove statusCode="408" />
<error statusCode="408" path="/error.cfm" responseMode="ExecuteURL" />
<remove statusCode="414" />
<error statusCode="414" path="/error.cfm" responseMode="ExecuteURL" />
<remove statusCode="415" />
<error statusCode="415" path="/error.cfm" responseMode="ExecuteURL" />
<remove statusCode="429" />
<error statusCode="429" path="/error.cfm" responseMode="ExecuteURL" />
<remove statusCode="500" />
<error statusCode="500" path="/error.cfm" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/" />
</customErrors>
</system.web>
</configuration>