我下载了 IIS 7 的 URL Rewrite 模块。我尝试重写以下形式的 URL:http://www.site.com/1234到http://www.site.com/234(获取数字并用 1000 重写其模数)。
我看到重写模块支持正则表达式,但我没有找到在哪里对 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;
}
}