0

私はMVC3アプリケーションをenとfaの2つの言語で作成しています。検索エンジン用にURLを最適化するために、次のようにURLでページのタイトルを使用します(2言語で1ページの場合)。

mysite.com/en/Home/Sheet/2/my-presentation-page
mysite.com/fa/Home/Sheet/2/صفحه-معرفی-من

ルートマップは次のとおりです。

{lang}/{controller}/{action}/{id}/{uriTitle}

ローカルでは機能しますが、インターネットにアップロードすると、最初のURLは正しく機能しますが、2番目のURLにはホームページしか表示されません!!! (mysite.com/fa/Home/Index)リダイレクトやエラーのスローなし!!! ちょうど、上記のURLのコンテンツを表示します!!! URLは変更されないことに注意してください。コンテンツだけがホームページのコンテンツです!それだけ!助けてください、なぜかわかりません?????? よろしく。

4

2 に答える 2

0

私は自分の答えを見つけます。MVCは問題ありませんでした!私の問題はこれでした:サーバー、URLに非ASCII文字を含むすべてのリクエストを拒否します!!! 実際、Webサーバーは、ASCII以外の文字を含む要求を受信すると、要求をアプリケーションに渡すのではなく、サイトのcached-defaultページで応答します。ホスティング会社を変更すると、問題は解決しました。よろしくお願いします

于 2011-07-09T22:27:21.003 に答える
0

あなたの解決策はまだ問題があります。URL構文の公式仕様では、US-ASCII範囲外の文字はパーセントエンコードする必要があると明示的に規定されているため、古いホスティング会社の実装では正しくなっています。さらに、新しいホストがこの標準に準拠していない場合は、インジェクションによってセキュリティの脆弱性が露呈している可能性があります。

ABNF表記は、US-ASCIIコード化文字セット[ASCII]に基づいて、その終端値を非負の整数(コードポイント)として定義します。URIは文字のシーケンスであるため、URI構文を理解するには、その関係を反転する必要があります。したがって、構文規則を完了するには、ABNFで使用される整数値をUS-ASCIIを介して対応する文字にマップして戻す必要があります。

URIは、数字、文字、およびいくつかのグラフィック記号で構成される限定された文字セットで構成されます。これらの文字の予約済みサブセットを使用して、URI内の構文コンポーネントを区切ることができます。残りの文字は、予約されていないセットと区切り文字として機能しない予約済み文字の両方を含み、各コンポーネントの識別データを定義します。

有効なURLのABNF構文は、https ://www.rfc-editor.org/rfc/rfc3986#appendix-Aにあります。

于 2012-06-06T07:16:37.683 に答える