سؤال

كيف يمكنني إعادة توجيه جميع طلبات FAVICON.ICO في الدليل الجذر أو أي دليل فرعي إلى /IMAGES/FAVICON.ICO

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

المحلول

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

RewriteEngine on
RewriteRule ^favicon\.ico$ /images/favicon.ico [L]

يحررولل favicon.ico. مع عمق شريحة مسار تعسفي:

RewriteCond $0 !=images/favicon.ico
RewriteRule ^([^/]+/)*favicon\.ico$ /images/favicon.ico [L]

نصائح أخرى

للحصول على فافيسون في www.mysite.com/images/favicon.icoالطريقة الأكثر قوة هي:

RewriteCond %{REQUEST_URI} !^/images/favicon\.ico$ [NC]
RewriteCond %{HTTP_HOST} (.+)
RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301,L,NC]

تفسير:

RewriteCond %{REQUEST_URI} !^/images/favicon\.ico [NC] :
- يضمن أن قاعدة إعادة التوجيه لا تنطبق إذا تم طلب URI الصحيح (مثل إعادة التوجيه 301، فسوف يكتب URI URI الصحيح Favicon لذاكرة التخزين المؤقت للمتصفح - ويتجنب هذا الخط معالجة القاعدة إذا طلب المتصفح عن URI الصحيح)
- [NC] يعني أنها ليست حساسة لحالة الأحرف

RewriteCond %{HTTP_HOST} (.+) :
- يسترجع اسم مضيف HTTP - لتجنب الترميز الثابت اسم المضيف في RewriteRule
- هذا يعني أنه يمكنك نسخ ملف .htaccess الخاص بك بين خادم المحلي / الاختبار وخادم الإنتاج دون مشاكل (أو الحاجة إلى إعادة تشغيل عنوان URL الخاص بك قاعدة موقعك الجديد في إعادة توجيهك)

RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301, L] :
- ^ هي بداية Regex
- (.*) هي مجموعة WildCard - مما يعني أنه يمكن أن يكون هناك صفر أو أي عدد من الأحرف قبل الكلمة favicon في URI (أي هذا هو الجزء الذي يسمح بتضمين الدليل الجذر أو أي دلائل فرعية يتم تضمينها في مطابقة URI)
- \.(ico|gif|png|jpe?g) يتحقق من أن تمديد URI يطابق أي من .ico, .gif, .png, .jpg, .jpeg
- $ هي نهاية regex
- http://%1/images/favicon.ico هو عنوان URL إعادة التوجيه - وتحميه اسم المضيف الذي استرجاعنا في السابق RewriteCond. وبعد نلاحظ أن %1 هو يسمى إعادة الترتيب الخلفية هذا يعني أنه الأخير RewriteCond التي تم الوفاء بها. (على سبيل المثال %2 سيكون 2nd الماضية RewriteCond أنه قد تم الوفاء به)
- R=301 يعني أنه إعادة توجيه دائم - الذي يخزن إعادة التوجيه في ذاكرة التخزين المؤقت للمتصفح. كن حذرا عند الاختبار - ستحتاج إلى حذف ذاكرة التخزين المؤقت للمتصفح بين تغييرات التعليمات البرمجية أو عدم تحديث إعادة التوجيه. ربما ترك هذا الخروج حتى تعرف أن القاعدة تعمل.
- L يعني أنه آخر إعادة توجيه يتبع في هذا .htaccess ملف - لن تحتاج إلى هذا للحصول على قاعدة العمل لأن الخط 1 لن يتم استيفاءه بمجرد توجيه المتصفح إلى عنوان URL الصحيح. بدون سطر واحد 1 أو L سوف يؤدي إعادة الاتصال إلى حلقة دائمة (نظرا لأن عنوان URL للإعادة التوجيه سيظل مرضية RewriteRule الظروف). ومع ذلك، فمن الجيد إضافة L على أي حال إذا كان لديك قواعد أخرى بعد قواعد FAVICON - نظرا لطلب Favicon.ico، يمكنك (ربما) تجاهل أي قواعد التالية.

يمكنك اختبار .htaccess القواعد في http://htaccess.mwl.be/

ملاحظة النهائية:
- كن حذرا أنك لا تملك أي طريقة لإعادة توجيه أخرى في .htaccess ملف يقع في أي من الدلائل الفرعية الخاصة بك.
- على سبيل المثال إذا وضعت هذه الإجابة في الخاص بك www.mysite.com/ المجلد الرئيسي .htaccess ملف RewriteRule (.*) xxx اكتب القاعدة في www.mysite.com/images/ يمكن للمجلد الفوضى مع النتائج.

RewriteEngine on

RewriteRule ^(.*)favicon\.ico /images/favicon.ico [L]

أنا أعرف أن السؤال هو الموسومة .htaccessولكن، لماذا لا تستخدم Symlink؟

ln -s images/favicon.ico favicon.ico

هذا إعادة كتابة سريعة يجب أن تفعل الخدعة:

RewriteRule ^(.*)favicon.ico /images/favicon.ico
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top