パラメータに%20
の代わりに+
とエンコードされたスペースがあると、サーバーで404エラーが返されます。なぜか分からない。 ルートがURLにASP.Netコアのパラメータの '+'が含まれていると404エラーが発生する
[Route("/Search/PRM1/{prm1}/PRM2/{prm2}/PRM3/{prm3}")
形式である私の第一の質問は、URLのこの種を理解するために、サーバーを依頼する方法でしょうか?
https://example.com/Search/PRM1/prm1%20value/PRM2/prm2+value/PRM3/prm3%20value
私の第二の質問は、自動的に読みやすくなり+
の代わり%20
でURLを生成する方法でしょうか? SEOに関する違いはありますか?
URLはCSHTMLで、サーバー側で生成されます(スペースを含む)PRMX変数 "クリア" テキストで
<a href="/Search/PRM1/@prm1/PRM2/@prm2/PRM3/@prm3">link</a>
。 WebAPI route 404's when there is a trailing space in the URL
[(してください)Sとして送信することは常に良いですtop URLで安全でない文字を使用する](https://perishablepress.com/stop-using-unsafe-characters-in-urls/)あなたのURLを "人間が読める"ようにするには、空白を ' - '(ダッシュで、アンダースコアではなく、SEOに優しい)に置き換える必要があります。そうでなければ、エンコーディングは正しいアプローチですが、URLをスライスする必要があります。 – NightOwl888
@ NightOwl888あなたのリンクは安全な文字を 'アルファベット文字[0-9a-zA-Z]、特殊文字$ -_ +!* '()、予約された目的のために予約された文字として定義しています。含まれる。 %20のSEOはフレンドリーですか?もしそうなら、私は%20でそれを許可するかもしれません。 – Jean
スペース( '%20')は安全な文字ではありません。マイクロソフトは、スペースを '+'に変換したASP.NETの壊れた動作を修正しました。これで '%20'として正しくエンコードされます。スペースを使用する必要がある場合は(検索機能なので)、クエリ文字列にパラメータを追加し、スペースを '%20'としてエンコードします。 – NightOwl888