عناوين URL نظيفة في IIS مع mod_rewrite
-
25-09-2019 - |
سؤال
لدي مشكلة 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.