Apache أي ما يعادل lighttpd url.rewriteonce؟
-
13-09-2019 - |
سؤال
لدي نقطة إدخال التطبيق الخاصة بي مثل هذا.
/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]
.
لا تنتمي إلى StackOverflow