7

私は、mvc の seo フレンドリーな URL の設計に少し固執しています....次の URL を例にとります: http://myapp/venues/resturants.aspx?location=central&orderBy=top-rated

私の mvc アプリでは、次のようにマッピングしました: http://myapp/venues/list/resturants/central/top-rated
{controller}/{action}/{category}/{location}/{order}

唯一の問題は、場所と注文がオプションであることです...したがって、次のようなリクエストを送信できるはずです: http://myapp/venues/list/resturants/top-rated . これは、リクエストがコントローラーのアクションにヒットしたときに問題になることが判明し、位置パラメーターは自然に「最高評価」を獲得しました。

助言がありますか?明示的なクエリ文字列を使用して複数のパラメーターを処理することを検討していますが、SEO をあまり犠牲にしたくないので、これが本当に最後のオプションです。

このようなジレンマに陥った人はいますか? また、どのように対処しましたか?

前もって感謝します!

4

5 に答える 5

14

プロフィール リンクをクリックして、統計、最近、応答などの URL を確認します。

例:

並べ替えなしでは、デフォルトで統計に設定されます

オプションのパラメータはクエリ パラメータにする必要があります

于 2009-01-06T16:18:23.943 に答える
2

オプションのパラメータが複数ある場合、常にこの問題が発生します。それらのいずれかまたは両方を非オプションにする (およびクエリ文字列内でオプションのものよりも前に配置する) か、クエリ文字列パラメーター表記を使用します。

于 2009-01-06T15:51:55.010 に答える
2

場所と注文の許容値が一意であると仮定すると (つまり、それらが入ってきたときにそれらを区別できます。または、1 つしか提供しない場合、それが場所か注文かをどのように知ることができますか?)、 2 つのパラメーターを取り、それらがコントローラー内にあるものを解決することができます。

ルート:{controller}/{action}/{param1}/{param2}

コントローラーのアクション:

public ActionResult MyAction(string param1, string param2)
{
    string location;
    string order;
    if (!ParseLocation(param1, out location))
    { ParseLocation(param2, out location); }
    // ...
}

特にエレガントではありませんが、必要な URL を取得できます。

于 2009-01-06T16:36:22.520 に答える
0

可能なクエリ文字列パラメーターごとに、ページにプロパティを作成してみませんか?

このようにして、わずか数行のコードで選択した方法で処理できます...

于 2009-01-06T15:47:03.477 に答える