لدي حاليًا إعادة التوجيه التالية على موقعي: 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
كان هدفي الأولي من وجود هذا المسار غير مرتبط بالاستيراد. أود استخدام 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 بـ mywebsite.com والهبوط على صفحة الورقة بالضبط التي كانوا يتصفحونها على خادم ما قبل الطباعة. كان هذا يعمل بشكل جيد حتى قام شخص ما بتقديم رابط داخلي mywebsite.com - This website is for sale! - mywebsite Resources and Information. في منشور وأدركنا أنه لا تتم إعادة توجيهه وبدلاً من ذلك يعطي خطأ 404. أنا أستخدم Discourse لقاعدة مستخدمين محددة وموجهة للغاية، ومن ثم، قد تبدو حالة الاستخدام الخاصة بي غريبة.
آها. أعتقد إذن أنك تريد مكون سمة يعيد كتابة تلك الروابط عند إدخالها في منشور. لست متأكدًا تمامًا من كيفية القيام بذلك. أحد الأشياء التي تتطلب بعض التدريب للمستخدم سيكون bbcode لتلك الروابط. ولكن أعتقد أن مكون السمة يمكنه فقط اختطاف تلك الروابط وإعادة كتابتها عند خبزها.