ملخص المشكلة
أواجه خطأ 404 عند الوصول إلى تحميل صورة عبر عنوان URL الخاص بها على موقع Discourse المباشر (https://techenclave.com)، على الرغم من أن الصورة موجودة على القرص ويتم تقديمها بشكل صحيح داخليًا. لقد قمت بإعادة خبز المنشور، وأعدت تشغيل التطبيق، وتحققت من أن التقديم الداخلي يعمل، ولكنه لا يزال يعرض خطأ 404 خارجيًا.
ما يعمل
1. التحميل موجود في قاعدة البيانات
باستخدام وحدة تحكم Rails، أكدت أن التحميل موجود مع جميع البيانات الوصفية الصحيحة:
Upload.find_by(sha1: 'a8fbe877e685e6a6994532c946c446b1279da7d2')
يشمل الإخراج:
url: \"/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg\"- اسم الملف:
IMG202506252257011.jpg - المعرف:
170265 - مستخدم في معرف المنشور:
3125774
2. الملف موجود على القرص
تم التحقق من وجود الملف داخل الحاوية:
ls -l /shared/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg
الملف موجود مع الملكية والأذونات الصحيحة:
discourse:www-data، -rw-r--r--.
3. الرابط الرمزي من المجلد العام يعمل
الرابط الرمزي public/uploads سليم:
ls -l /var/www/discourse/public/uploads
# => /shared/uploads
4. Discourse يمكنه تقديمه داخليًا
تم الاختبار باستخدام:
curl -I http://localhost:3000/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg
النتيجة: HTTP/1.1 200 OK
5. تم إعادة خبز المنشور
تم إعادة خبز المنشور باستخدام:
Post.find(3125774).rebake!
6. تم إعادة تشغيل التطبيق
تم تشغيل:
./launcher restart app
تمت محاولة أيضًا:
sudo ./launcher rebuild app
(كانت خدمة Docker غير متاحة مؤقتًا ولكن تم إصلاحها لاحقًا.)
ما لا يعمل
الوصول الخارجي إلى الصورة
الوصول إلى:
https://techenclave.com/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg
يعيد:
404 Not Found
يحدث هذا عبر المتصفحات وفي وضع التصفح المتخفي.
ما أحتاج إلى المساعدة فيه
هل يمكن لأحد المساعدة في تحديد ما قد يسبب:
- تحميل يعمل ويتم تقديمه عبر
localhost:3000، - ولكنه يعيد خطأ 404 خارجيًا على النطاق العام؟
ماذا يجب أن أتحقق منه أيضًا؟ أي تكوينات أو سجلات ذات صلة للفحص؟
شكرا مقدما!
