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 を取得します。
URL の「.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 が省略されている場合は機能しないのでしょうか?