現在、複雑な URL 処理の概念に関する質問に苦労しています。アプリケーションには、さまざまな製品タイプ (カテゴリ、色、メーカー、素材など) をすべて含む製品プロパティ データベース テーブル/コレクションがあります。
{_id:1,alias:"mercedes-benz",type:"brand"},
{_id:2,alias:"suv-cars",type:"category"},
{_id:3,alias:"cars",type:"category"},
{_id:4,alias:"toyota",type:"manufacturer"},
{_id:5,alias:"red",type:"color"},
{_id:6,alias:"yellow",type:"color"},
{_id:7,alias:"bmw",type:"manufacturer"},
{_id:8,alias:"leather",type:"material"}
...
ここでの使命は、含まれている製品プロパティを取得するために、可能なすべての (!) 順序で以下のスタイルで URL 要求を処理することです。許可されている唯一の文字はダッシュです (SEO の要件が定められています。一部のプロパティにはダッシュを単独で含めることもできます。これも重要な点だと思います。つまり、カテゴリ「suv-cars」またはメーカー「mercedes-benz」):
http:\\www.example.com\{category}-{color}-{manufacturer}-{material}
http:\\www.example.com\{color}-{manufacturer}
http:\\www.example.com\{color}-{category}-{material}-{manufacturer}
http:\\www.example.com\{category}-{color}-nonexistingproperty-{manufacturer}
http:\\www.example.com\{color}-{category}-{manufacturer}
http:\\www.example.com\{manufacturer}
http:\\www.example.com\{manufacturer}-{category}-{color}-{material}
http:\\www.example.com\{category}
http:\\www.example.com\{manufacturer}-nonexistingproperty-{category}-{color}-{material}
http:\\www.example.com\{color}-crap-{manufacturer}
...
...そう:プロパティのすべての順序を許可する必要があります! 結果は、URL リクエストごとに使用されるプロパティに関する情報でなければなりません (ところで、重複したコンテンツはリダイレクトと定義済みのスキーマによって修正されます)。「存在しないプロパティ」/「がらくた」が発生する可能性があり、無視する必要があります。
アップデート:
アイデア1:質問について私が考えている1つの方法は、クエリ文字列をダッシュで分割し、値ごとに分析することです。問題:いくつかのプロパティで2つまたは3つ以上の単語の組み合わせで、さまざまな組み合わせとバリエーションが多すぎますだから、このアイデアを殺すたくさんのクエリがあると思います..
アイデア 2:もう 1 つの方法は、(私の意見では) 大きすぎるエイリアス/URL テーブルをさまざまな組み合わせで構築することですが、それは醜い回避策だと思います。さまざまなプロパティが約 15.000 あるため、さまざまな並べ替え順序のエイリアスの数がこの考えを台無しにしています。
アイデア 3:あなたの番です。あなたの心とあなたの時間をありがとう。