لديّ حاويتان (واحدة لـ Discourse وأخرى لـ WordPress) مع وكيل عكسي Nginخ يقوم بتوجيه الحركة إلى:
WordPress: أي عناوين URL لا تحتوي على /community بعد mydomain.com.
Discourse: عندما يكون عنوان URL هو mydomain.com/community.
كان النظام يعمل بشكل جيد لمدة عام. بعد التحديث إلى الإصدار 2.5.0.beta6، لاحظت أنه عند التوجه إلى mydomain.com/community، يتم إعادة كتابة العنوان إلى mydomain.com، لكنه لا يُحوَّل (redirect) فعليًا إلى mydomain.com، لذا يعمل Discourse بشكل صحيح (باستثناء بعض أخطاء 404 في وحدة التحكم).
إذا ذهبت إلى موضوع معين، فإن عنوان URL يُعاد كتابته ويحتوي على /community.
أما عند الدخول إلى قسم الإدارة، فلا يظهر /community في العنوان، ومع ذلك يمكنني إجراء أي تعديلات في لوحة الإدارة.
بالطبع، إذا قمت بتحديث الصفحة يدويًا عندما لا يكون /community موجودًا في عنوان URL، سيتم تحويلي إلى WordPress.
إذا أردت رؤية الأمر عمليًا: brigadedufric.com/community/ (أزل المسافات).
كيف يمكنني محاولة إصلاح هذا؟
إذا كان الأمر معقدًا جدًا، فقد أنقل كل شيء من مجلد فرعي إلى نطاق فرعي لتجنب أي مشاكل في المستقبل. هل لديك أي توصيات حول الطريقة الأفضل وما يجب عدم نسيانه؟
أعتقد أن هذا خطأ، لأنني ألاحظ نفس المشكلة في إعداد المجلد الفرعي لدي بعد الترقية.
تعمل عناوين URL بشكل صحيح عند زيارتها مباشرة، والروابط في الترميز صحيحة، لكن عندما يتولى JavaScript عملية التنقل بين الصفحات، فإنه يحذف مسار المجلد الفرعي من عنوان URL عند استدعاء history.pushState().
وبالتالي، بينما يعمل التنقل، فإن عنوان URL المعروض للمستخدم غير صحيح، مما يشكل مشكلة إلى حد ما لأنه إذا قام شخص ما بنسخ الرابط لمشاركته، فسيؤدي ذلك إلى خطأ 404.
سيستمر التثبيت في المجلد الفرعي في أن يكون به بعض الغرابة مثل هذا لأنه ليس موصى به ولا مُعتمد على نطاق واسع. أولئك الذين لديهم أسباب لاستخدام المجلد الفرعي عادةً ما يضطرون للإبلاغ عن هذه المشكلات في كل مرة للحصول على إصلاحها.
لذلك فإن أفضل توصية لي لك هي استخدام نطاق فرعي وإنهاء الأمر.