将请求转移到页面Asp.net

时间:2015-03-25 17:08:10

标签: c# asp.net

在我的Asp.net 4.0网站上,我有一个显示特定用户个人资料的页面。页面网址如下所示。

  

www.mysite.com/PublicProfile.aspx?UserID=1234

我想设置一种机制,如果客户端提供以下请求,服务器会重定向或提供响应

  

www.mysite.com/1234

我认为可以通过url重写或使用Http处理程序来完成。 对此有任何帮助,提前谢谢。

2 个答案:

答案 0 :(得分:1)

你可以找到here一篇关于网址重写的精彩文章,你想要的结果如下所示。

<rule name="PublicProfile" stopProcessing="true">
   <match url="^([0-9]+)$" ignoreCase="true"/>
   <action type="Rewrite" url="/PublicProfile.aspx?UserID={R:1}"/>
</rule>

注意:

  1. ^([0-9]+)$仅限数字
  2. stopProcessing="true"表示不会再检查任何规则。
  3. {R:1}将包含与规则匹配的数字
  4. 需要在Web.config
  5. 下的<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}&amp;title={R:2}" />
</rule>

</rewrite>

测试REWRITE RULE

要测试规则是否正确重写URL,请打开Web浏览器并请求以下URL:

http://localhost/article/234/some-title

您应该看到Web服务器上的重写规则已将原始URL更改为Article.aspx,并且它已将“234”和“some-title”作为查询字符串参数的值传递。