باستثناء دليل مع ISAPI-إعادة الكتابة
-
22-08-2019 - |
سؤال
أحاول استبعاد دليل باستخدام ISAPI-Rewrite (ملاحظة:هذا هو منفذ windows/iis لإعادة كتابة التعديل).
الدليل الذي أريد استبعاده هو "api" عندما يكون في جذر الموقع.
هذه هي قاعدتي:
قاعدة إعادة الكتابة ^(/api/)(.+)$ $1$2 [NC، L]
سيبدو الطلب كالتالي:/api/v2/users?usernames=scottw
لسوء الحظ، يتم دائمًا استبعاد قيمة querstring وتتم إعادة كتابة عنوان url كـ /api/v2/users.
أنا أهاجم على افتراض أن (.+) سيستحوذ على كل شيء آخر.
أي اقتراحات؟أو طريقة أفضل لاستبعاد الدليل؟
شكرًا
تحديث:لقد قمت أيضًا بتبسيط القاعدة، لكن ذلك لم يغير شيئًا أيضًا:
قاعدة إعادة الكتابة ^(/api/.+)$ $1
المحلول
يتبين أن هناك أمرين يحدثان هنا:
- يجب أن يكون التعبير العادي ^(api/) وليس ^(/api).تم استبعاد "/" الأول.
- يبدو أن أداة المحلل اللغوي regex التي تأتي مع ISAPI_Rewrite لا تتعامل مع سلاسل الاستعلام بشكل صحيح.
القاعدة التي يبدو أنها تعمل أخيرًا هي:
RewriteRule ^(api/.+) $1 [NC,L]
نصائح أخرى
ولقد رأيت في بعض الأحيان. + "يعمل بشكل غريب، كنت قد تحاول التحول إلى '.. * أنا لا أقول أنه سوف يعمل، ولكن قد يكون يستحق المحاولة.