إعادة توجيه الروابط الداخلية عبر المسارات

لدي حاليًا إعادة التوجيه التالية على موقعي: example.com/[0-9]+/[0-9]+example.com/tag/$1-$2 حيث $1 و $2 هما القيمتان من التعبير العادي السابق. لقد كتبت المكون الإضافي البسيط أدناه وهو يعمل بشكل مثالي إذا كتبت example.com/[0-9]+/[0-9]+ في شريط عنوان URL. ومع ذلك، إذا قدمت نفس الرابط في منشور داخل discourse، فإن إعادة التوجيه لا تعمل. هل هناك طريقة لتحقيق ذلك؟

Discourse::Application.routes.append do
    get '/:year/:id', to: redirect('/tag/%{year}-%{id}') , constraints: {year: /[0-9]+/, id: /[0-9]+/}
end

تحتاج إلى إعادة كتابة الروابط الداخلية في المنشورات الأولية (وإعادة الخبز).

3 إعجابات

هل هذا سيغير المنشورات الحالية فقط حتى الآن؟ هل أحتاج إلى القيام بذلك بعد كل منشور جديد إذن؟

سيتم كتابة الروابط الجديدة بواسطة Discourse بحيث تكون صحيحة منذ البداية.

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

كان هدفي الأولي من وجود هذا المسار غير مرتبط بالاستيراد. أود استخدام example.com/123/456 (123 و 456 اختياريان هنا طالما أنهما كلاهما [0-9]+) كاختصار لـ example.com/tag/123-456 بحيث لا يكون استخدامها “خاطئًا” من الناحية الدلالية.
ومع ذلك، فإن المسار لا يعمل للروابط الداخلية (أحتاج إلى تحديث الموقع لجعل المسار يعمل)، ومن هنا أحتاج إلى اكتشاف كل example.com/[0-9]+/[0-9]+ وتغييره إلى example.com/tag/[0-9]+-[0-9]+ والذي يبدو مستحيلاً عمليًا القيام به دون تحليل كل منشور جديد واحدًا تلو الآخر.

عذرًا. فاتني أن مشكلتك هي أنك لا تحب المسار الخاص بالوسوم. لماذا تعتقد أنه سيكون من المفيد تغيير هذا المسار؟ هل سيقوم الأشخاص بكتابتها يدويًا؟ لن يفعلوا ذلك، لأن “دسكورس” سيسمح لهم بالبحث عنها وإدخالها.

هل يمكنك التراجع خطوة إلى الوراء وتقول ما هي المشكلة التي تحلها بإزالة “الوسم” من مسار الوسم؟

يقوم موقعي بإنشاء تطابق واحد لواحد مع الأوراق البحثية في خادم ما قبل الطباعة والعلامات. اعتاد المستخدمون على زيارة الموقع preprint.com/123/456. لورقة بالمعرف 123-456. هذا يتوافق مع mywebsite.com - This website is for sale! - mywebsite Resources and Information. ومن ثم لدي مسار يعيد توجيه mywebsite.com - This website is for sale! - mywebsite Resources and Information. إلى mywebsite.com - This website is for sale! - mywebsite Resources and Information..

الفكرة هي أن المستخدمين يمكنهم استبدال preprint.com بـ mywebsite.com والهبوط على صفحة الورقة بالضبط التي كانوا يتصفحونها على خادم ما قبل الطباعة. كان هذا يعمل بشكل جيد حتى قام شخص ما بتقديم رابط داخلي mywebsite.com - This website is for sale! - mywebsite Resources and Information. في منشور وأدركنا أنه لا تتم إعادة توجيهه وبدلاً من ذلك يعطي خطأ 404. أنا أستخدم Discourse لقاعدة مستخدمين محددة وموجهة للغاية، ومن ثم، قد تبدو حالة الاستخدام الخاصة بي غريبة.

آها. أعتقد إذن أنك تريد مكون سمة يعيد كتابة تلك الروابط عند إدخالها في منشور. لست متأكدًا تمامًا من كيفية القيام بذلك. أحد الأشياء التي تتطلب بعض التدريب للمستخدم سيكون bbcode لتلك الروابط. ولكن أعتقد أن مكون السمة يمكنه فقط اختطاف تلك الروابط وإعادة كتابتها عند خبزها.

بعد أن ذكرت مكونات السمة، تمكنت من تحقيق ما كنت أبحث عنه جزئيًا باستخدام المكون التالي: Auto-Linkify Words

إنه يدعم التعبيرات العادية بشكل مثالي، لذا كلما كتب شخص ما mywebsite.com - This website is for sale! - mywebsite Resources and Information. فإنه يستبدل الرابط بنجاح بـ mywebsite.com - This website is for sale! - mywebsite Resources and Information..

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

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

رائع! أعتقد أن مكون سمة مخصص يمكنه إصلاح تلك التي تستخدم https أيضًا، ولكن ربما يمكنك محاولة تدريب الأشخاص على عدم استخدامها، أو استخدام #123-456

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