ASP.NET MVCで「/tags/tagName」といったURLを使えるように設定してみます。
RouteConfigの設定
RouteConfig.csのRegisterRoutesメソッドの routes.MapRoute(name: "Default"...
の前に以下のコードを追加します。
RouteConfig.cs
routes.MapRoute(
name: "TagDetail",
url: "tags/{tagName}",
defaults: new { controller = "Tag", action = "Detail" }
);
これで例えば「/tags/tag1」といったURLに対して、
TagControllerのDetailメソッドが、パラメタtagNameに"tag1"を渡されて、呼び出されます。
「.」を許す
タグ名に「.」を含められるようにしたい場合、さらに設定が必要です。
デフォルトの設定では「.」を含むURLは404 Not Foundになってしまいます。
これを「/tags/」以下のPathには「.」も含められるようにするには、
以下の記述をWeb.configのsystem.webServer/handlers内に加えます。
Web.config
<add name="TagsUrlHandler"
path="/tags/*"
verb="*"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
これで「/tags/ASP.NET」といったURLに対しても、
RouteConfig.csで指定したアクションが呼び出されるようになります。