Назад | Перейти на главную страницу

Использование математических операций в модуле перезаписи URL-адресов IIS 7

Я загружаю модуль URL Rewrite для IIS 7. Я пытаюсь переписать URL в такой форме: http://www.site.com/1234 к http://www.site.com/234 (получите номер и перепишите его модуль на 1000).

Я видел, что модуль перезаписи поддерживает регулярное выражение, но я не нашел, где применить математические операции (если возможно) к URL-адресу.

Буду рад помочь с этим! Спасибо :)

ссылка на модуль перезаписи 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;
    }
}