Проблемы SES с IIS 7.5 и ColdFusion 10

У меня есть сайт, созданный с помощью ColdBox, и я пытаюсь удалить /index.cfm/ из URL-адреса. У меня это отлично работает на ColdFusion 9, работающем на IIS7, с использованием приведенного ниже файла web.config, но я не могу заставить его работать на CF10/IIS7.5. Модуль перезаписи установлен, и URL-адреса SES, включающие index.cfm (т. е. index.cfm/product/1), работают нормально. Я знаю, что CF10 теперь работает на Tomcat вместо JRun, и что Tomcat по умолчанию не поддерживает URL-адреса SES, но, насколько я понимаю, команда CF явно добавила их поддержку (и действительно, проверка файла web.xml показывает, что для быть правдой.) Я действительно не верю, что это проблема, специфичная для ColdBox, а скорее что-то среднее между CF10/Tomcat и IIS7.5.

ПРИМЕЧАНИЕ. У меня нет прямого доступа к веб-серверу, но я работаю с хостинг-провайдером. Я также не являюсь профессионалом в области IIS, насколько это возможно. И, наконец, нет, Apache не вариант - поверьте мне, я бы хотел, чтобы это было иначе ;-)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <defaultDocument>
        <files>
            <clear />
            <add value="index.cfm" />
            <add value="Default.htm" />
            <add value="Default.asp" />
            <add value="index.htm" />
            <add value="index.html" />
            <add value="iisstart.htm" />
            <add value="default.aspx" />
        </files>
    </defaultDocument>
    <rewrite>
        <rules>
            <rule name="SQL Injection - EXEC" stopProcessing="true">
                <match url="^.*EXEC\(@.*$" />
                <action type="CustomResponse" url="/includes/templates/404.html" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
            </rule>
            <rule name="SQL Injection - CAST" stopProcessing="true">
                <match url="^.*CAST\(.*$" />
                <action type="CustomResponse" url="/includes/templates/404.html" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
            </rule>
            <rule name="SQL Injection - DECLARE" stopProcessing="true">
                <match url="^.*DECLARE.*$" />
                <action type="CustomResponse" url="/includes/templates/404.html" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
            </rule>
            <rule name="SQL Injection - DECLARE%20" stopProcessing="true">
                <match url="^.*DECLARE%20.*$" />
                <action type="CustomResponse" url="/includes/templates/404.html" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
            </rule>
            <rule name="SQL Injection - NVARCHAR" stopProcessing="true">
                <match url="^.*NVARCHAR.*$" />
                <action type="CustomResponse" url="/includes/templates/404.html" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
            </rule>
            <rule name="SQL Injection - sp_password" stopProcessing="true">
                <match url="^.*sp_password.*$" />
                <action type="CustomResponse" url="/includes/templates/404.html" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
            </rule>
            <rule name="SQL Injection - xp" stopProcessing="true">
                <match url="^.*%20xp_.*$" />
                <action type="CustomResponse" url="/includes/templates/404.html" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
            </rule>
            <rule name="Application Adminsitration" stopProcessing="true">
                <match url="^(.*)$" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{SCRIPT_NAME}" pattern="^/(.*(CFIDE|cfide|CFFormGateway|jrunscripts|railo-context|fckeditor)).*$" ignoreCase="false" />
                </conditions>
                <action type="None" />
            </rule>
            <rule name="Flash and Flex Communication" stopProcessing="true">
                <match url="^(.*)$" ignoreCase="false" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{SCRIPT_NAME}" pattern="^/(.*(flashservices|flex2gateway|flex-remoting)).*$" ignoreCase="false" />
                </conditions>
                <action type="Rewrite" url="index.cfm/{PATH_INFO}" appendQueryString="true" />
            </rule>
            <rule name="Static Files" stopProcessing="true">
                <match url="^(.*)$" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{SCRIPT_NAME}" pattern="\.(bmp|gif|jpe?g|png|css|js|txt|pdf|doc|xls)$" ignoreCase="false" />
                </conditions>
                <action type="None" />
            </rule>
            <rule name="RESTful Applications (not working yet)" stopProcessing="true">
                <match url="^(.*)$" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{SCRIPT_NAME}" pattern="^/(.*(rest)).*$" ignoreCase="false" />
                </conditions>
                <action type="None" />
            </rule>
            <rule name="Insert index.cfm" stopProcessing="true">
                <match url="^(.*)$" ignoreCase="false" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="index.cfm/{PATH_INFO}" appendQueryString="true" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>
</configuration>

person ken.dunnington    schedule 16.07.2012    source источник


Ответы (1)


Единственный обходной путь, который я нашел, заключался в установке другого переписчика URL, такого как Helicon.

НО это было исправлено в обновлении 10.0.1, выпущенном на этих выходных! http://blogs.coldfusion.com/post.cfm/coldfusion-10-update-1-10-0-1-released

person Ryan Stille    schedule 04.09.2012