Я не смог сделать одно правило, которое бы захватило и {URL}
, и {QUERY_STRING}
, а также отобразило URL-адрес так, как я этого хотел. Итак, я разделил его на два правила.
URL в строчные
<rule name="UrlToLowercase" stopProcessing="true">
<match url=".*[A-Z].*" ignoreCase="false" />
<conditions>
<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" ignoreCase="true" negate="true" />
<add input="{URL}" pattern="^.*\.(axd|css|js|jpg|jpeg|png|gif|txt|xml|svg|pdf)$" negate="true" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="{ToLower:{URL}}" />
</rule>
URL с Строка запроса в строчные
<rule name="UrlWithQueryStringToLowercase" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions trackAllCaptures="true">
<add input="{QUERY_STRING}" pattern="(.*)" />
<add input="{QUERY_STRING}" pattern=".*[A-Z].*" ignoreCase="false" />
<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" ignoreCase="true" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="{ToLower:{URL}}?{ToLower:{C:0}}" appendQueryString="false" />
</rule>
Это должно охватывать каждый случай, и если это не так, пожалуйста, дайте мне знать. :)
Я добавил некоторые дополнительные условия, которые вы можете захотеть оставить или вывезти.
<add input="{URL}" pattern="^.*\.(axd|css|js|jpg|jpeg|png|gif|txt|xml|svg|pdf)$" negate="true" ignoreCase="true" />
игнорирует пути, которые заканчиваются на axd, css, js, jpg, ... и т. Д. Без этого правила вы не сможете загрузить файл с прописными буквами с вашего сервера.
<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" ignoreCase="true" negate="true" />
проигнорирует запросы методом POST. Без этого правила POST, указывающие заглавные URL-адреса, потеряют данные из-за 301 (у GET нет этой проблемы).
хотя это может и не быть проблемой, разве вы не должны быть осторожны? Вы на 100% уверены, что дело никогда не важно в ваших ответах? –
После небольшого поиска этого http://stackoverflow.com/questions/20018553/url-rewrite-to-change-querystring-case может помочь вам? – Damon
@Bartdude важно? Можете ли вы уточнить. – CuriousDev