سؤال

لدي نقطة إدخال التطبيق الخاصة بي مثل هذا.

/app/index.php <-- this is the main dispatcher.

وتطبيق مجلدات محددة تحت / التطبيق /

/app/todo/
/app/calendar/
/app/bugtrack/

كل مجلد تطبيق Cotains تطبيق ملفات محددة.

أرغب في اجتياز تطبيق unders allers جميع طلبات التمرير عبر /App/index.php.

لهذا السبب.

/app/todo/list/today -> goes to /app/index.php
/app/ -> goes to /app/index.php
/app/bugtrack/anything/else goes to /app/index.php

على جهاز اختبار LightPD الخاص بي، يمكنني القيام بذلك بسهولة عن طريق كتابة قاعدة مثل هذا.

url.rewrite-once = (
    "^\/app\/todo\/*"   => "/app/index.php",
    "^\/app\/calendar\/*"   => "/app/index.php",
    "^\/app\/bugtrack\/*"   => "/app/index.php",
)

الآن بحاجة إلى جعلها تعمل على Apache باستخدام .htaccess و mod_rewrite.

ولكن بغض النظر عن ما أقوم به، فإنه لا يعمل.

كتبت ما يلي في /app/.htaccess

RewriteEngine on
RewriteRule .* index.php [QSA]

يعمل من أجل / التطبيق / و / التطبيق / TODO / ولكن فشل / التطبيق / ToDo / قائمة / اليوم على سبيل المثال.

يمكن لأي شخص أن تعطيني أي فكرة عن كيفية القيام بذلك؟

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

المحلول

RewriteEngine On
RewriteBase /app
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

ما هو هذا هو إذا كان الطلب ليس اسم ملف أو دليل، وإعادة كتابةه إلى index.php. ثم تفقد $_SERVER[REQUEST_URI].

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