我可能对 ASP.NET 期望过高,但在 Apache 中,重写 url 很简单,因此请求类似: http://mysite/myfolder/mypage/niceurlparameter 实际上设法提供静态页面http://mysite/mypage.html
我如何在 Global.asax 中做到这一点?
我试过这个:
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/*", "~/myfolder/{page}.html");
但是当我请求http://mysite/myfolder/mypage/niceurlparameter时,它一直返回 404 。
但是,这有效:
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}.html/*", "~/myfolder/{page}.html");
所以我在请求http://mysite/myfolder/mypage.html/niceurlparameter 时确实得到了 mypage.html。
我只想摆脱我的网址中的“.html”部分。我错过了什么?
更新:由于某种原因,在前一种情况下,“*”通配符未被接受。
更改为:
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/{whatever}", "~/myfolder/{page}.html");
似乎将请求路由到 html 页面,但随后出现错误:
There is no build provider registered for the extension '.html'.
为什么在世界上它只能在前一种情况下工作(在 URL 中使用 html),而不是在 html 被忽略时?