Я загружаю модуль URL Rewrite для IIS 7. Я пытаюсь переписать URL в такой форме: http://www.site.com/1234 к http://www.site.com/234 (получите номер и перепишите его модуль на 1000).
Я видел, что модуль перезаписи поддерживает регулярное выражение, но я не нашел, где применить математические операции (если возможно) к URL-адресу.
Буду рад помочь с этим! Спасибо :)
К сожалению, изначально он не поддерживает эту функцию, однако для этого вы можете использовать несколько строк C #. Вы можете следовать руководству по адресу: http://learn.iis.net/page.aspx/804/developing-a-custom-rewrite-provider-for-url-rewrite-module/
По сути, вы должны включить правило, концептуально подобное этому:
<rule name="Modulus Rewrite">
<match url="(.*)/([\d+])$" />
<action type="rewrite" url="{R:1}{Modulus:{R:2}}" />
</rule>
где вы захватываете URL-адрес, но отдельно сегмент с числами на нем, и передаете его настраиваемому поставщику
И тогда ваш код будет выглядеть примерно так, как показано ниже, и вы будете использовать <condition> для
public class ModulusProvider: IRewriteProvider
{
public void Initialize(IDictionary<string, string> settings, IRewriteContext rewriteContext)
{
}
public string Rewrite(string value)
{
int iVal;
if (int.TryParse(value, out iVal)) {
return (iVal % 1000).ToString(CultureInfo.InvariantCulture);
}
return String.Empty;
}
}