web-dev-qa-db-ja.com

asp.netコア2.0でのURL書き換え

URLを書き直したい

http://localhost:56713/Home/UserDetails?Code=223322

http://localhost:56713/223322

以下のStartUp.csに書き込みましたが、機能しません

var rewrite = new RewriteOptions()
  .AddRewrite(@"{$1}", "Home/UserDetails?Code={$1}",true);
4
Techno Crave

AddRewrite関数の最初のパラメーターに正規表現が必要です。

var rewrite = new RewriteOptions().AddRewrite(
     @"^Home/UserDetails?Code=(.*)",  // RegEx to match Route
     "Home/{$1}",                     // URL to rewrite route
     skipRemainingRules: true         // Should skip other rules
);

このリンクは、より多くの例に役立つ可能性があります https://docs.Microsoft.com/en-us/aspnet/core/fundamentals/url-rewriting?tabs=aspnetcore2x

6
gblmarquez

@"{$1}"に一致するルールを追加しても機能しません。用語$1は、RegExを使用して解析された値を表します。正規表現を実行していないので、「URLがnullのときはいつでもURLを書き換える」ように効果的に指示しています。明らかに、それはあまりありそうにありません。

次の正規表現を使用して、受信URLを照合します。

@"^Home/UserDetails?Code=(\d+)"

(\d+)は、RegExに「1つ以上の数字」と一致して変数として格納するように指示します。これはparensに含まれる唯一の変数であるため、値は$1に格納されます。

次に、その正規表現を使用して解析された値を使用してURLを書き換えます。

"Home/$1"

これらの2つの文字列をAddRewriteメソッドに渡します。

AddRewrite(
    @"^Home/UserDetails?Code=(\d+)", // RegEx to match URL
    "Home/$1", // URL to rewrite
    true // Stop processing any aditional rules
);
1
Marc LaFleur