我有一个字符串作为字符串,我想调用asp.net代码(IIS7模块),在我们的应用程序中重写URL并从中获取一个重写的URL:
http://webserver/nice/url/youHaveThere
到
http://webserver/app/Default.aspx?category=nice&catalog=url&pageid=youHaveThere
我想从asp.net应用程序中调用此函数。我该怎么做?
答案 0 :(得分:0)
我假设您的服务器上已经安装了该模块,并且只是询问有关定义特定规则的问题。 This是您可以阅读创建规则所需的一切内容。
规则都是通过正则表达式完成的,而非我的强项。但这是一个格式示例:
<rewrite>
<rules>
<rule name="Rewrite to article.aspx">
<match url="^article/([0-9]+)/([_0-9a-z-]+)" />
<action type="Rewrite" url="article.aspx?id={R:1}&title={R:2}" />
</rule>
</rules>
</rewrite>
([0-9] +)代表仅数字模式,([_ 0-9a-z - ] +)代表文本和数字。我认为这对你所追求的东西有用:
<rewrite>
<rules>
<rule name="Rewrite to Default.aspx">
<match url="^article/([_0-9a-z-]+)/([_0-9a-z-]+)/([_0-9a-z-]+)" />
<action type="Rewrite" url="app/Default.aspx?category={R:1}&catalog={R:2}&pageid={R:3}" />
</rule>
</rules>
</rewrite>
答案 1 :(得分:0)
我不认为你会称之为“重写规则”。相反,你只需使用正则表达式替换。也许是这样的:
string nice_url = "http://webserver/nice/url/youHaveThere"
string new_url = Regex.Replace(nice_url, @"/(?<category>\w+)/(?<catalog>\w+)/(?<pageid>\w+)$", "app/Default.aspx?category=${category}&catalog=${catalog}&pageid=${pageid}");