هل يمكن الاحتفاظ بالموقع القديم في مكانه وجعل الروابط القديمة تعمل داخل discourse؟

كما هو مقترح، أحاول الاحتفاظ بمنتدى (منتديات) القديم “في مكانه” أثناء استخدام discourse على نفس النطاق. تمكنت من جعل nginx يعمل كوكيل وتجاوز أي تعارضات مع عناوين URL الخاصة بـ discourse، لذا فإن كل شيء يعمل بشكل رائع عند تحميل الصفحة الأولية (ولأغراض تحسين محركات البحث).\n\nمشكلتي تكمن في الربط بتلك الروابط القديمة داخل discourse. يقوم توجيه تطبيق discourse باعتراض عناوين URL هذه كروابط داخلية، وبالتالي تظهر رسالة 404. لقد جربت طرقًا عديدة لتجاوز ذلك باستخدام الأدوات المتاحة، ولكن لا شيء يعمل مع عناوين URL أو نفس النطاق. (لا أريد أيضًا وضع discourse في مجلد فرعي).\n\nلو كان بإمكاني فقط الإضافة إلى مصفوفة SERVER_SIDE_ONLY لمحاكاة ما أفعله في nginx، فإن ذلك ينبغي أن يعمل. هل لدى أي شخص أي اقتراحات حول كيفية القيام بذلك، أو شيء آخر؟

هذا ليس ما كان يوصي به هذا الموضوع على الإطلاق. يجب عليك بدء منتداك الجديد على نطاق فرعي جديد وترك القديم وراءك.

أعتقد أن هذا صحيح. إذا كنت تريد حقًا المنتدى القديم والجديد على نفس النطاق (والذي، مرة أخرى، يبدو فكرة مروعة للمشكلات التي أوضحتها بالفعل)، فيمكنك بشكل معقول أن يكون لديك نطاق آخر هو CNAME للنطاق القديم وأن تجعل Discourse يرتبط بتلك، ثم سيعتقد أنه خادم مختلف ولن يحاول معالجة تلك الروابط بنفسه وعندما يحصل nginx على الرابط، فإنه إما سيقدم البيانات من النطاق الآخر أو يعيد توجيه المتصفح إلى النطاق الصحيح.

لقد فكرت في وضع المحتوى القديم على نطاق فرعي archive (مع المخاطرة بالتأثير على تحسين محركات البحث SEO)، ولكن حتى في هذه الحالة، لا أعتقد أن هناك طريقة لجعل Discourse يغير الرابط الذي يقدمه المستخدم بخلاف إنشاء رابط دائم لكل صفحة ممكنة. أفترض أن استخدام النطاق الفرعي archive سيصبح هو السائد في نهاية المطاف مع علم الناس به ونسخه ولصقه من شريط عنوان المتصفح.

إذا كنت قد أجريت للتو استيرادًا، فسيكون هناك روابط دائمة لكل هذه، ولكن هذا ليس مفيدًا جدًا. وهو نوع الشيء الذي قد يفكر فيه شخص ما يكسب جزءًا كبيرًا من عيشه من خلال إجراء عمليات استيراد.

أسهل شيء هو نقل المنتدى الجديد إلى عنوان URL جديد (نأمل ألا تفسد الكثير من تحسين محركات البحث SEO بعد) أو نقل المنتدى القديم إلى عنوان آخر (وفقدان تحسين محركات البحث SEO للمحتوى القديم، على الرغم من أنه قد يكون من الممكن إجراء تطبيع للروابط الدائمة أو سحر NGINX الذي يقوم بإعادة التوجيه). هل الموقع الجديد موجود منذ فترة طويلة؟

قد تتمكن من إنشاء تطبيع للروابط الدائمة. . . لا. أعتقد أن تطبيع الروابط الدائمة يعمل فقط للروابط الدائمة ولا يمكن أن تكون خارجية. قد يكون من الممكن أن يقوم مكون سمة بالعثور على عناوين URL المتطابقة وإعادة كتابتها باستخدام اسم المضيف المزيف/الاسم المستعار، ولكني لست متأكدًا مما يصل إلى المنشور المخبوز (هل هو عنوان URL الكامل مع اسم المضيف، أم أن عملية الخبز تزيل اسم المضيف؟).

إذا كان عنوان URL الكامل موجودًا في المنشور المخبوز، فيمكنك القيام بشيء مثل ما أفعله في GitHub - literatecomputing/runners-onebox-theme: Custom oneboxes for Garmin and Strava.

إعجاب واحد (1)

:bulb:! يمكنني التعامل مع هذا في صفحة 404 عبر نص برمجي في HTML الخاص بالسِمة…

لقد جعلت صفحة 404 تعيد تحميل نافذة المتصفح إلى عنوان URL “المفقود” الذي سيصل إلى جانب الخادم. إنها تعمل! العيب الوحيد الذي أراه هو أن إعادة التوجيه ملحوظة ويتم إخراجك من التطبيق لأي 404 حقيقية (تفقد الشريط الجانبي/الرأس).

<script type="text/discourse-plugin" version="0.8">
  api.onPageChange((url, title) => {
    const router = api.container.lookup('service:router');
    var is404 = document.getElementsByClassName("page-not-found");
    if (is404.length) {
        const params = new URLSearchParams(router.currentRoute.queryParams).toString();
        let q = "";
        if (params){ q = "?"+params; }
        window.location.replace(window.location.origin + url + q);
    }
  });
</script>

أعتقد أنه يجب أن تكون قادرًا على التقاطها من جانب العميل كما اقترحت من قبل. هل تتضمن الروابط إلى الموقع القديم في ملف HTML اسم المضيف؟

نعم، عنوان URL الكامل موجود. سأبحث في إنشاء مكون سمة (Theme Component)، شكرًا لك!

إعجاب واحد (1)

تم إنشاء مكون السمة! يبحث عن أي hrefs إلى hostname بمسار يطابق التعبيرات العادية التي قدمتها، ثم يضيف حدث click لتعيين window.location لتجاوز التوجيه الداخلي.

إعجاب واحد (1)

أنا فضولي، إذا كان (inline) oneboxing يعمل في هذا السيناريو.

تحصل عناوين URL لنفس النطاق على oneboxed ولا تزال تواجه نفس المشكلة مثل الرابط العادي. سيتم تطبيق مكون السمة الخاص بي على أي روابط <a> href في المنشور، لذا فهو يعمل أيضًا مع الروابط التي تم عمل onebox لها.

إعجاب واحد (1)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.