.htaccess - إعادة توجيه فافيسون
سؤال
كيف يمكنني إعادة توجيه جميع طلبات 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