سؤال

الجميع،

لقد واجهت 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 على أي حال بدلاً من قائمة طويلة من إعادة الكتابة ، لأنها ستكون أسرع بكثير من التكرار من خلال قائمة طويلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top