使用web.config重定向具有查询字符串的不存在页面

本文关键字:字符串 不存在 查询 web config 重定向 使用 | 更新日期: 2023-09-27 17:57:39

我正在aspx中的一个网站上工作,在该网站上,用户可以访问类似于"www.website.com/referralname"或"www.webite.com/otherreferralname"的url,并将被重定向到www.websitecom/genericform.aspx?referred=参考名称

我不是这个网站的最初设计者,我想尽可能少地添加,所以我希望有一种方法可以通过webconfig实现这一点,而不是必须添加一个重定向页面,并在每个可能的引用名称中切换大小写。

我已经探索了使用的可能性

<customErrors mode="RemoteOnly">
    <error statusCode="404" redirect="~/404.aspx"/>
</customErrors>

但AppCode中已经有代码以某种方式覆盖或取代了我的代码,而且它只显示默认的404页面。如有任何建议,不胜感激。

编辑:我被告知.aspx无法使用customErrors标记,所以这可能是问题的一部分。我也希望能澄清这个问题。我今天会学到很多东西!

编辑2:所以在做了更多的研究之后,我认为对我有利的搜索词是"路由"。我找到了这个MSDN页面,我想这将引导我找到我的解决方案。如果这对我来说是可行的,我稍后会发布一条带有"答案"的评论。

使用web.config重定向具有查询字符串的不存在页面

您可以查找IHttpHandler和IHttpHandlerFactory。我在我的维基上使用它们。我有一些以.wiki结尾的页面,这些页面不存在,但被重定向到从数据库加载它们的通用页面。你必须有权访问IIS服务器(或致电ISP),才能通过你选择的扩展名获取不存在的文件,仍然可以通过Asp.Net软件进行处理。

同样的事情还有其他的方法。

PS为了使用我的方法,我必须在服务器上拥有完全信任才能使其工作。我确信这没有必要,但我想不通。

编辑:

这些是我保存的书签:

使用HTTP处理程序提供动态内容

如何创建ASP.NET HTTP处理程序

好的,所以最终工作的是将以下代码添加到web.config文件夹的system.web区域

<urlMappings enabled ="true">
    <add url="~/referralname" mappedUrl="~/custom/sign-up.aspx?ref=referralname"/>
</urlMappings>

如此简单,却又如此难以捉摸!我希望这能帮助其他人!