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);
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
@"{$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
);