我创建了一个新的网站,我想保留旧的链接只是为了做一个RedirectPermanent。 为此,我写了一个新的控制器
public class RedirectController : Controller
{
//
// GET: /Redirect/
public ActionResult Index()
{
return RedirectPermanent("~/");
}
...
在RouteConfig.cs中,我将路由写为
routes.MapRoute(
name: "Redirect 301 prensa",
url: "press.aspx", defaults: new { controller = "Redirect", action = "Index" }
);
用于重定向缓存在客户上的旧网址
我的问题是当我想把特殊字符“?”在url参数
中 routes.MapRoute(
name: "Redirect 301 prensa",
url: "press.aspx?id=1", defaults: new { controller = "Redirect", action = "Index" }
);
应用程序编译好但崩溃开始说Url不能包含?字符
我的web.config就像
<httpRuntime requestPathInvalidCharacters="<,>,*,%,&,\" requestValidationMode="2.0"/>
<pages controlRenderingCompatibilityVersion="4.0" validateRequest="false"/>
编写特殊字符的想法吗?
提前致谢
答案 0 :(得分:0)
我认为您应该尝试重新配置路由映射,并使用通配符表达式对这两个路由进行分组:
routes.MapRoute(
name: "Redirect 301 prensa",
url: "{press.aspx*}", defaults: new { controller = "Redirect", action = "Index" }
);
通过这种方式,相关的网址(press.aspx,press.asx?id = 1 press.asxpAnything)将被重定向到同一个地方。
并检查web.config中的requestPathInvalidCharacters以允许使用字符&#39;?&#39;可能&#39;&amp;&#39;。