على عكس الـ router السابق, RewriteRouter يمكن إستخدامه فى المجلدات الفرعية, حيث سيقوم تلقائياً بمعرفة
الـ URL ألأساسى الذى سيتم إستخدامه. على سبيل المثال , إن كنت تضع ملف index.php خاصتك فى مجلد فرعى
على webserver بهذا المسار projects/myapp/index.php/
, سيتم وضع قيمة الـ URL الأساسى
ليكون projects/myapp/
, هذا المسار سيتم تجاهله لاحقاً من بداية المسار عند حدوث عملية مقارنة
بالـ route , و هذا يريحك من عملية إضافة هذا المسار إلى الـ routes خاصتك, فإذا كان لديك route مثل
'user/:username'
, فسيتوافق مع URLs مثل
http://localhost/projects/myapp/user/martel
و
http://example.com/user/martel
.
![]() |
ملاحظة |
---|---|
عملية توقع قيمة الـ URL الأساسى تعتبر حساسة لحالة الحروف, لذلك تأكد من أن الـ URL سيتطابق مع أسم مجلد فرعى لديك (حتى على أنظمة windows). إذا لم تتطابق سيستدعى الـ action المسمى noRoute. |
إن لم يتم توقع الـ URL الأساسى بشكل صحيح , فيمكنك وضع القيمة الصحيحة التى تراها بإستخدام الـ method المسمى setRewriteBase فى RewriteRouter :
$router->setRewriteBase('/projects/myapp');
![]() |
ملاحظة |
---|---|
هذه الخطوة لن تحتاج إليها فى اغلب الحالات , و ينصح بعدم إستخدامها إلا فى الضرورة القصوى لأن هذا سيترتب عليه مشاكل عند نقل برنامجك من مكان إلى أخر و ستحتاج تغير القيمة هذه من جديد . |