سؤال

أنا أقوم بتثبيت phpancake ، هناك مجلد هناك شيما مثل هذا

application/
install/
library/
public/
sql_schema/
install.html
install.php

ماذا تعني هذه القاعدة؟

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /vote/public/index.php [NC,L]
هل كانت مفيدة؟

المحلول

إعادة الكتابة لها جزأين. يحدد أول واحد أنه إذا كان اسم الملف المطلوب عبارة عن ملف منتظم بحجم أكبر من 0 (-s) ، رابط رمزي (-l) أو دليل (-d) ، أعد كتابة إلى أي مكان ، على سبيل المثال. لا تتخذ أي إجراء. [NC,L] يعني أن القاعدة غير حساسة للقضية والقاعدة الأخيرة التي تتطابق مع هذه الشروط.

يتم إعادة توجيه جميع الطلبات الأخرى إلى /vote/public/index.php.

الغرض من إعادة الكتابة هذا هو أنه يمكن جلب الملف الحالي والحالي من الخادم دون تداخل. بدون القاعدة الأولى ، سيذهب كل طلب ملف (ملفات CSS و JS ، والصور ، إلخ) index.php التي من شأنها أن تعبث الأمور بشدة.

عادة ما يتم كتابة هذا في إعلان واحد. يمكنك نفي الظروف ، ثم [OR] يمكن إخراج statemens أيضا:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /vote/public/index.php [NC,L]

هذا يعادل البيان الأصلي.

نصائح أخرى

هذه هي إعادة كتابة قياسية بشكل أساسي والتي تحقق مما إذا كان الملف المطلوب (أو الدليل أو الرابط الرمزي) موجودًا على القرص ، وفي هذه الحالة الملف/الدليل/الخ. يجب أن تستخدم.

يجب أن تذهب جميع المباريات الأخرى إلى /votes/public/index.php

ستمر القاعدة الأولى من خلال جميع الطلبات التي يمكن تعيينها إلى ملف عادي بحجم أكبر من الصفر (-s) ، رابط رمزي (-l) أو دليل (-d). يتم جلب كل طلب آخر من خلال القاعدة الثانية وإعادة كتابته /vote/public/index.php.

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