سؤال

عند إنشاء موقع ويب متعدد اللغات (باستخدام نماذج ويب ASP.NET)، سأستخدم وحدة HTTP لإعادة كتابة عناوين URL لينتهي الأمر بشيء سهل الاستخدام (للبشر ومحركات البحث) مثل:

uk/products/product_category_one/sub_category_one/index.aspx
uk/products/product_category_one/sub_category_one/widget_mk5.aspx
es/productos/categoría_de_producto_una/widget_mk5.aspx

إن فهمي (المبتدئ) لـ MVC هو أن عنوان URL يجب أن يأخذ التنسيق

وحدة التحكم / الإجراء / المعرف

لذا فإن تكرار الوظيفة أعلاه باستخدام MVC سينتهي بعناوين URL مشابهة لما يلي:

products/category/123/product_category_one/sub_category_one
products/items/456/widget_mk5

أسئلة..

  • هل يمكنني إدراج رمز البلد في عنوان URL قبل قسم "وحدة التحكم"؟
  • هل من الممكن تعيين "المنتجات" و"المنتجات" على نفس وحدة التحكم؟

شكرا لمساعدتك

يحرر:بالإضافة إلى إجابة Panos أدناه، وجدت المزيد من المعلومات حول موقع ASP.NET.

هل كانت مفيدة؟

المحلول

يمكن أن يتخذ عنوان URL أي شكل آخر تريده تقريبًا.لمزيد من المعلومات، تحقق إطار عمل ASP.NET MVC (الجزء الثاني):توجيه URL.فقط للبدء (بما أنني لست متأكدًا مما إذا كان هذا هو الحل الأمثل)، يمكنك إضافة مسارين جديدين في ملف global.asax الخاص بك:

        routes.MapRoute(
            "ukRoute",
            "{lang}/Products/{action}/{id}/{subcategory}",
            new { lang = "uk", controller = "Products", action = "Index", id = "", subcategory = "" }
        );
        routes.MapRoute(
            "esRoute",
            "{lang}/Productos/{action}/{id}/{subcategory}",
            new { lang = "es", controller = "Products", action = "Index", id = "", subcategory = "" }
        );

تتعرف هذه المسارات على عناوين URL التالية (وتقوم بتعيين كليهما إلى ملف ActionResult Category(string id, string subcategory) طريقة ProductsController):

uk/Products/Category/1/A
es/Productos/Category/1/A

إذا كنت تريد إنشاء عناوين URL هذه في طرق العرض الخاصة بك، فيمكنك استخدام شيء مثل:

<%= Html.RouteLink("English 1.A", "ukRoute", new { lang = "uk", action = "Category", id = "1", subcategory = "A" })%>
<%= Html.RouteLink("Spanish 1.A", "esRoute", new { lang = "es", action = "Category", id = "1", subcategory = "A" })%>

نصائح أخرى

يمكنك القيام بذلك، ولكن ضع في اعتبارك أنه ليست كل البلدان لغات.على سبيل المثال، en-gb هو التمثيل المعتاد للغة الإنجليزية البريطانية، أو بشكل أكثر تحديدًا، لغة بريطانيا العظمى للمحتوى الإنجليزي، على سبيل المثال.إذا استطعت، فمن المفيد اتباع الاصطلاحات المشتقة من RFC1766 للغة LOCALE.

بالمناسبة، تميل محركات البحث إلى القيام بعمل جيد إلى حد ما في التعامل مع التفاوض على المحتوى، لذلك لا تحتاج بالضرورة إلى عناوين URI منفصلة لنفس المحتوى بلغات مختلفة.سوف يقوم Google Japan بالزحف باستخدام ja-JP كرأس لغة القبول، على سبيل المثال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top