如何编写捕获*.php的路由?

Bru*_*oLM 5 c# routes asp.net-mvc-3

我想制作一条捕获所有"php"文件的路线......我试过了:

routes.MapRoute("php", "{*x}.php", new { controller = ... });
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常:

A path segment that contains more than one section, such as a literal section
or a parameter, cannot contain a catch-all parameter.
Parameter: routeUrl
Run Code Online (Sandbox Code Playgroud)

它必须抓住:

/p1/p2/p3.php
/p1/p2.php
/p1.php
Run Code Online (Sandbox Code Playgroud)

我想写一个可以捕捉N等级的规则......我怎么能这样做?

Lau*_*tin 6

您可以使用约束:

routes.MapRoute("php", "{*allphp}", new { ... }, new { allphp = @".*\.php" });
Run Code Online (Sandbox Code Playgroud)

如果您仍然有默认路由,则必须放在此之前.

我的回答是基于:使路由忽略文件扩展名的请求