ISAPI إعادة كتابة الترقية من 2 إلى 3 - سلسلة الاستعلام غير متوفرة؟

StackOverflow https://stackoverflow.com/questions/1088272

  •  23-08-2019
  •  | 
  •  

سؤال

متأخرا بعض الشيء لكنني قمت بالترقية فقط من ISAPI أعد كتابة الإصدار 2 إلى الإصدار 3.

أواجه مشاكل مع القواعد في النمط التالي:

RewriteRule ^/seo-friendly/(\?(.*))? /test/index.cfm?page=home&$2 

هنا أريد أن يتم تمرير أي معلمات سلسلة الاستعلام الإضافية إلى عنوان URL لإعادة كتابتها.

هذا يعمل بشكل جيد تحت IR2 ولكنه فشل في تمرير المعلمات الإضافية في IR3. لدي كل من أداة اختبار regex .exe من كل نسخة لذلك حاولت تلك.

إذا دخلت / سيو صديق /؟ مرحبا = العالم, ، يقول جهاز اختبار Regex IR2 يقول $ 1 :؟ مرحبا = العالم و 2 دولار: مرحبا = العالموهو مثالي

لكن IR3 يقول $ 0: / سيو صديق / و $1 و $2 فارغة.

يبدو أنه لا يمكنني الوصول إلى متغيرات سلسلة الاستعلام.

لقد وجدت هذا العلم المذكورة في المستندات:

o (تطبيع)

تطبيع السلسلة قبل المعالجة. يتضمن التطبيع إزالة ترميز URL، أحرف غير قانونية، إلخ. أيضا، تطبيع IIS لأوري يزيل سلسلة الاستعلام تماما. لذلك، يجب عدم استخدام التطبيع إذا كانت هناك حاجة إلى سلسلة الاستعلام

لكنني لم أضع هذا العلم ضد قواعدي. هل هناك قاعدة عالمية يمكنني ضبطها لإيقاف هذا التطبيع (الظاهر)؟

هل كانت مفيدة؟

المحلول

إذا أعمل ISAPI إعادة كتابة ما يقرب من نفس mod_rewrite Apache، يجب عليك فقط تحديد علامة QSA:

RewriteRule ^/seo-friendly/$ /test/index.cfm?page=home [QSA]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top