سؤال

أحاول استبعاد دليل باستخدام ISAPI-Rewrite (ملاحظة:هذا هو منفذ windows/iis لإعادة كتابة التعديل).

الدليل الذي أريد استبعاده هو "api" عندما يكون في جذر الموقع.

هذه هي قاعدتي:

قاعدة إعادة الكتابة ^(/api/)(.+)$ $1$2 [NC، L]

سيبدو الطلب كالتالي:/api/v2/users?usernames=scottw

لسوء الحظ، يتم دائمًا استبعاد قيمة querstring وتتم إعادة كتابة عنوان url كـ /api/v2/users.

أنا أهاجم على افتراض أن (.+) سيستحوذ على كل شيء آخر.

أي اقتراحات؟أو طريقة أفضل لاستبعاد الدليل؟

شكرًا

تحديث:لقد قمت أيضًا بتبسيط القاعدة، لكن ذلك لم يغير شيئًا أيضًا:

قاعدة إعادة الكتابة ^(/api/.+)$ $1

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

المحلول

يتبين أن هناك أمرين يحدثان هنا:

  1. يجب أن يكون التعبير العادي ^(api/) وليس ^(/api).تم استبعاد "/" الأول.
  2. يبدو أن أداة المحلل اللغوي regex التي تأتي مع ISAPI_Rewrite لا تتعامل مع سلاسل الاستعلام بشكل صحيح.

القاعدة التي يبدو أنها تعمل أخيرًا هي:

RewriteRule ^(api/.+) $1 [NC,L]

نصائح أخرى

ولقد رأيت في بعض الأحيان. + "يعمل بشكل غريب، كنت قد تحاول التحول إلى '.. * أنا لا أقول أنه سوف يعمل، ولكن قد يكون يستحق المحاولة.

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