在我的Asp.net 4.0网站上,我有一个显示特定用户个人资料的页面。页面网址如下所示。
www.mysite.com/PublicProfile.aspx?UserID=1234
我想设置一种机制,如果客户端提供以下请求,服务器会重定向或提供响应
www.mysite.com/1234
我认为可以通过url重写或使用Http处理程序来完成。 对此有任何帮助,提前谢谢。
答案 0 :(得分:1)
你可以找到here一篇关于网址重写的精彩文章,你想要的结果如下所示。
<rule name="PublicProfile" stopProcessing="true">
<match url="^([0-9]+)$" ignoreCase="true"/>
<action type="Rewrite" url="/PublicProfile.aspx?UserID={R:1}"/>
</rule>
注意:
^([0-9]+)$
仅限数字stopProcessing="true"
表示不会再检查任何规则。{R:1}
将包含与规则匹配的数字Web.config
<system.webServer><rewrite><rules> <!-- add rule here --> </rules><rewrite><system.webServer>
中添加规则
醇>
答案 1 :(得分:-2)
是的,你写的是可以通过网址重写。
您需要使用IIS管理器中的URL重写UI创建重写规则 步骤是:
转到IIS管理器
选择默认网站
在功能视图中,单击URL重写
在右侧的“操作”窗格中,单击“添加规则”
在“添加规则”对话框中,选择“空白规则”,然后单击“确定”。
现在您必须定义实际的重写规则。在URL重写模块中,通过指定四条必需信息来定义重写规则:
规则的名称。 用于匹配URL字符串的模式。 可选的条件集。 如果模式匹配以及所有条件检查是否成功,则执行的操作。
NAMING A RULE
在“名称”文本框中,输入将唯一标识规则的名称,例如:“重写为article.aspx”。
定义图案
在“图案”文本框中,输入以下字符串:^article/([0-9]+)/([_0-9a-z-]+)
此字符串是一个正则表达式,指定模式将匹配满足以下条件的任何URL字符串:
从字符序列“article /”开始。 在第一个“/”后面包含一个或多个数字字符。 在第二个“/".
之后包含一个或多个字母数字或”_“或” - “字符请注意,正则表达式的某些部分在括号内。这些括号创建捕获组,稍后可以使用反向引用在规则中引用它们。
定义行动
由于我们创建的规则应该重写URL,因此请选择“操作”组框中列出的“重写”操作类型。在“重写URL:”文本框中,输入以下字符串:article.aspx?id={R:1}&title={R:2}
此字符串指定应将输入URL重写到的新值。请注意,对于查询字符串参数的值,我们使用{R:1}和{R:2},它们是使用括号在规则模式中定义的捕获组的反向引用。
保留所有其他设置的默认值。编辑入站规则属性页面应该看起来是图像Here
查看配置文件中的重写规则
重写规则存储在ApplicationHost.config文件或Web.config文件中。要检查我们刚刚创建的规则的配置,请打开位于%SystemDrive%\ inetput \ wwwroot中的Web.config文件。在此文件中,您应该看到包含此规则定义的部分:
<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>
</rewrite>
测试REWRITE RULE
要测试规则是否正确重写URL,请打开Web浏览器并请求以下URL:
http://localhost/article/234/some-title
您应该看到Web服务器上的重写规则已将原始URL更改为Article.aspx,并且它已将“234”和“some-title”作为查询字符串参数的值传递。