在 IIS 7 Url 重写模块中使用数学运算

在 IIS 7 Url 重写模块中使用数学运算

我下载了 IIS 7 的 URL Rewrite 模块。我尝试重写以下形式的 URL:http://www.site.com/1234http://www.site.com/234(获取数字并用 1000 重写其模数)。

我看到重写模块支持正则表达式,但我没有找到在哪里对 URL 应用数学运算(如果可能)。

我很高兴能得到帮助!谢谢 :)

url 重写模块链接

答案1

不幸的是,它不支持这种功能,但是你可以用几行 C# 来实现。你可以按照以下教程操作:http://learn.iis.net/page.aspx/804/developing-a-custom-rewrite-provider-for-url-rewrite-module/

基本上,你会在概念上包含一条类似这样的规则: 你捕获 URL,但单独捕获带有数字的部分,然后将其传递给自定义提供程序
<rule name="Modulus Rewrite">
<match url="(.*)/([\d+])$" />
<action type="rewrite" url="{R:1}{Modulus:{R:2}}" />
</rule>

然后你的代码看起来会像下面的代码一样,你将使用 <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;
    }
} 

相关内容