كيف يمكنني جعل .هتكس العمل على الدليل الحالي وليس الدلائل?

StackOverflow https://stackoverflow.com/questions/1200348

  •  05-07-2019
  •  | 
  •  

سؤال

أنا باستخدام وزارة الدفاع إعادة كتابة للوصول إلى PHP الملفات في الدليل الجذر من موقع الويب الخاص بي بشكل غير مباشر.حاليا لدي شيء من هذا القبيل ،

RewriteRule ^(blog|about|page3|etc)$ /$1.php [L]

ولكن ما أود أن استخدام

RewriteRule ^(.*)$ /$1.php [L]

حتى لا تضطر إلى تحديث .ملف htaccess كلما أريد إضافة صفحة جديدة إلى موقع الويب الخاص بي.المشكلة مع هذا ومع ذلك هو أنه يؤثر على الدلائل أيضا.مما يجعل CSS, javascript, صور unaccessable لأنه الموجهات إلى "/dir/example.png.php".

فما هو أفضل حل هنا ؟

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

المحلول

جرب هذه القاعدة:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule .* $0.php [L]

نصائح أخرى

وتحرير .htaccess لهذه:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php [L]

وبعد بدء تشغيل المحرك كتابة، وسوف تحقق أولا لمعرفة ما إذا كان الملف المطلوب هو ملف الفعلي على النظام، أو إذا كان هو في الواقع دليل. إذا كان أيا من تلك، فإنه سيتم تنفيذ حكم، وهو في هذه الحالة هو محاولة للعثور على ملف بإلحاق .php وخدمة ما يصل.

والدلائل الفرعية، والصور، CSS، وما شابه ذلك سوف يكون على ما يرام لأنها سوف خطوة للخروج من إعادة كتابة مرة واحدة وجدوا.

أود أن تفعل ذلك مع مرشحات تجاهل الدلائل الفرعية.وبهذه الطريقة فقط عليك تغيير إذا كنت تضيف مجلد فرعي.سوف تحتاج إلى إضافة سطر مثل كتبها sosh's إذا كان لديك صور أو غيرها من الملفات في المجلد

التالية سوف تتجاهل "الصور" و "شبيبة" المجلدات الفرعية و توجيه كل شيء آخر

RewriteRule   ^images*   -  [L]
RewriteRule   ^js*       -  [L]
RewriteRule   ^(.*)$     /$1.php   [L]

وشيء من هذا القبيل (لاحظ!):

RewriteRule !\.(js|ico|gif|jpg|png|css|zip|gz|html|xml)$ index.php
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top