В модуле Rewrite URL-адреса IIS7 я могу указать в правиле переадресации не применять к запросам HTTP-post?

В модуле Rewrite URL-адреса IIS7 я могу указать в правиле перенаправления не применять к запросам http-post? Я использую шаблоны, предоставленные Microsoft, для ввода всех URL-адресов и добавления конечной косой черты. Однако у меня есть запросы AJAX, которые не соответствуют этой спецификации, но они ломаются, мы их переписываем как 301. Я не беспокоюсь о POST-запросах для SEO, поэтому я бы предпочел, если бы я мог просто указать в правиле, чтобы игнорировать его. Ниже приведены мои правила:

            <rule name="AddTrailingSlashRule" stopProcessing="true">
                <match url="(.*[^/])$" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                </conditions>
                <action type="Redirect" url="{R:1}/" />
            </rule>
            <rule name="LowerCaseRule" stopProcessing="true">
                <match url="[A-Z]" ignoreCase="false" />
                <action type="Redirect" url="{ToLower:{URL}}" />
            </rule>

Ответы

Ответ 1

У вас есть доступ к этому в переменной {REQUEST_METHOD} в условиях.

<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" ignoreCase="true" negate="true" />

Ответ 2

Некоторое время назад у нас была та же проблема, что и у OP, и затем мы применили патриджное решение, которое работало нормально, пока мы не заметили, что некоторые вызовы REST DELETE не будут работать. Оказалось, что редирект с косой чертой делает GET из запросов DELETE.

Поэтому я изменил решение, чтобы правило перенаправления применялось только к запросам GET.

<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="GET" ignoreCase="true" />