مشاكل الأحرف المميزة غير UTF في عنوان URL

نقوم بترحيل منتدى إسباني وإعداد روابط دائمة لجميع المواضيع.
العناوين وعناوين URL الحالية تحتوي على أحرف ذات علامات تشكيل في ISO 8859-15 بها، تم تهريبها باستخدام ترميز النسبة المئوية

forum/showthread.php?96700-Galer%EDa-de-im%E1genes

نقوم بإعادة كتابتها باستخدام /forum\\/showthread.php\\?(\\d*).*/thread/\\1 ولكن للأسف نحصل على خطأ في الخادم (مع صفحة بيضاء) قبل معالجة تطبيع الروابط الدائمة.

يمكنك رؤية هذا على سبيل المثال في Try:

https://try.discourse.org/forum/showthread.php?96700-Galer�a-de-im�genes يعطي صفحة فارغة و “طلب سيء”. Rack::QueryParser::InvalidParameterError (تسلسل بايت غير صالح في UTF-8)

https://try.discourse.org/forum/showthread.php?96700-Galeria-de-imagenes يعطي صفحة “غير موجود” العادية.

هل لديك أي نصائح حول كيفية تجاوز هذا دون الكثير من التعديلات المخصصة على nginx؟

3 إعجابات

هل يمكن أن يكون فك ترميز 96700-Galer%EDa-de-im%E1genes باستخدام ISO 8859-15 وتشفيره باستخدام UTF-8 قبل إنشاء الرابط الدائم حلاً؟ أم أن هناك بالفعل روابط واردة تستخدم الأحرف المشفرة بـ ISO 8859-15 في عنوان URL؟

ضع في اعتبارك، لست متأكدًا مما إذا كان من الضروري استخدام الترميز بالنسبة المئوية لكي تعمل الروابط الدائمة - لم ألقِ نظرة على الكود. أعتقد أنك ستحتاج إلى التجربة قليلاً. لا أعتقد أن هناك حلاً سهلاً لهذا. إذا وجدت حلاً، يرجى نشره هنا. قد يكون مفيدًا للآخرين.

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

نعم، هناك حوالي 150 ألف رابط خارجي لا نملك السيطرة عليها.