Ответ 1
У вас есть доступ к этому в переменной {REQUEST_METHOD}
в условиях.
<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" ignoreCase="true" negate="true" />
В модуле 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>
У вас есть доступ к этому в переменной {REQUEST_METHOD}
в условиях.
<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" ignoreCase="true" negate="true" />
Некоторое время назад у нас была та же проблема, что и у OP, и затем мы применили патриджное решение, которое работало нормально, пока мы не заметили, что некоторые вызовы REST DELETE не будут работать. Оказалось, что редирект с косой чертой делает GET из запросов DELETE.
Поэтому я изменил решение, чтобы правило перенаправления применялось только к запросам GET.
<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="GET" ignoreCase="true" />