هل يمكن للمرء استخدام BackReference في Apache Mod_Rewrite
-
26-09-2019 - |
سؤال
الجميع،
لقد واجهت Quirk للاهتمام المثير للاهتمام في أحد إعادة كتابتي ، والتي أردت حلها باستخدام المراجع الخلفية المسماة. ومع ذلك ، مما يمكنني رؤيته ، هذا غير ممكن في Apache Mod_Rewrite.
لديّ اثنين من عناوين URL الواردة ، كل منهما يحتوي على متغير رئيسي ، والذي يجب إعادة كتابته إلى نفس الإجراء الإطار الأساسي.
عناوين URL الواردة:
/users/list/page-2
/users/list/2
إعادة كتابة نقطة النهاية المطلوبة
/؟ الوحدة النمطية = المستخدمين والعمل = قائمة و pagenum = 2
كنت أرغب في فعل شيء كهذا
rewriterule ^/(؟ pu003Cmodule> ([ w]+))/(؟ pu003Caction> ([ w]+))/(صفحة-)؟ (؟ Pu003Cpagenum> ([ d]+)) $ /؟ module = $ {module} & action = $ {Action} & pagenum = $ {pagenum} [l ، qsa
ومع ذلك ، لا يريد Apache أن يلعب هكذا على الإطلاق ، ويعطيني قيمًا خالية في أماكن التراجعات الخلفية المسماة. للحصول على المشكلة ، استخدمت المراجع العددية للمجموعات التي تم التقاطها ($ 1 ، $ 2 ، $ 4) (لكنني تقريبًا في منتصف الطريق إلى حد N = 9 Apache). لذلك هذا ليس سدادة عرض بالنسبة لي.
أود فقط أن أعرف ، إذا كانت المسماة المتوفرة متوفرة في Mod_Rewrite من Apache ، وإذا كانت كذلك ، فلماذا لا يتطابق نمط إعادة كتابة الخاص بي؟
شكرا يا إيان
المحلول
قد يكون هذا مفيدًا:
نصائح أخرى
إذا لم تنجح إجابة @superspace ، ما أقترحه هو توجيه جميع الروابط التي لا توجه الملفات/الدلائل وتوجيهها إلى صفحة فهرس. ثم قم بإعداد فئة التوجيه التي تأخذ في اسم الصفحة ويقوم بمطابقة يدوي ، بحيث يمكنك الحصول على مجموعة Capture REGEX المسماة وسرد القوالب أو الصفحات التي تريد إطعامها.
إذا كان عليك أن تذهب بهذه الطريقة ، فأخبرني ويمكنني تقديم بعض التعليمات البرمجية من فصولي.
لا يبدو على ما يبدو ، بعد النظر في مصدر mod_rewrite.
أوصي باستخدام خيار rewriteMAP على أي حال بدلاً من قائمة طويلة من إعادة الكتابة ، لأنها ستكون أسرع بكثير من التكرار من خلال قائمة طويلة.