0

製品の着信 URL は mydomain.com/someproductname.html になります。そのような URL のみを処理するようにルートを制限する必要があります。チェックの大文字と小文字も区別しないようにします。以下のルートよりもそのような制限を適用しない場合、別のルートで処理する必要がある mydomain.com/level1category/ などの URL リクエストも取得します。

制約したいルート (「ItemName」セグメントを制約する必要があります):

     routes.MapRoute(
     "ProductLink4", // Route name
     "{RootPointer}/{L1Cat}/{L2Cat}/{ItemName}", // URL with parameters
     new
     {
         controller = "Store",
         action = "ViewProduct",
     },
     new { controller = "Store", action = "ViewProduct" ItemName = @"[^\\s]+(\\.(?i)(html))" });

                routes.MapRoute(
    "ProductLink3", // Route name
    "{RootPointer}/{L1Cat}/{ItemName}", // URL with parameters
    new
    {
        controller = "Store",
        action = "ViewProduct",

    },
    new { controller = "Store", action = "ViewProduct" });

                routes.MapRoute(
    "ProductLink2", // Route name
    "{RootPointer}/{ItemName}", // URL with parameters
    new
    {
        controller = "Store",
        action = "ViewProduct",

    },
    new { controller = "Store", action = "ViewProduct" });

    }
4

2 に答える 2

1

ルートを次のように設定します

 routes.MapRoute(
 "ProductLink4", // Route name
 "{RootPointer}/{L1Cat}/{L2Cat}/{ItemName}.html",
 new
 {
     controller = "Store",
     action = "ViewProduct",
 },

.html フェイクファイルに制限する必要があります。

于 2012-04-25T02:46:06.667 に答える
1
string path = "mydomain.com/someproductname.html".ToLower();

正規表現で

bool flag = Regex.IsMatch(path, @"^.*\.(html)$");

正規表現なし

bool flag = System.IO.Path.GetExtension(path) == ".html";
于 2012-04-25T02:22:55.873 に答える