سؤال

لدي مشكلة mod_rewrite. أو بشكل أكثر دقة ، لدي مشكلة مع ISAPI_Rewrite ، وهو استنساخ Mod_Rewrite لـ IIS. على وجه التحديد ، ISAPI_REWRITE V3 يعمل على IIS 7. يهدف إلى التصرف بشكل متماثل لـ mod_rewrite ، لذلك آمل أن تنطبق مشكلتي على mod_rewrite أيضًا.

مشكلتي تتلخص في هذا: لدي نص bar.php الذي أريد الوصول إليه عبر عنوان URL foo. أعيد كتابة أولاً foo إلى bar. ثم حاول تحويل عنوان URL النظيف إلى اسم ملف حقيقي.

RewriteRule ^foo$ bar

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .* $0.php

ال RewriteCond فشل لأن ${REQUEST_FILENAME} لا يزال يقول "فو" بدلاً من "بار". لم يتم تحديثه بعد إعادة الكتابة الأولى.

كيف يمكنني جعل هذا العمل؟ يمكنني إصلاح هذا بمجرد الكتابة RewriteRule ^foo$ bar.php. لكنني أفضل إبقاء قواعد إعادة تعيين عنوان URL منفصلة عن قواعد تمديد الملف.

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

المحلول

إجابة مؤقتة ...

RewriteCond %{DOCUMENT_ROOT}/$0.php -f

باستخدام $0 أتمكن من الوصول إلى أحدث عنوان URL المعاد كتابته ، مما يجعلني سعيدًا. لكن علي أن أضيف %{DOCUMENT_ROOT} لتحويل ذلك إلى اسم ملف ، مما يجعلني حزينًا. قليلا من kludge.

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