मैं रूट निर्देशिका या किसी उपनिर्देशिका में favicon.ico के लिए सभी अनुरोधों कैसे अनुप्रेषित करते /images/favicon.ico को.htaccess - अनुप्रेषित फ़ेविकॉन
उत्तर
इस नियम का प्रयास करें संपादित और favicon.ico मनमाना पथ सेगमेंट गहराई के साथ के लिए:
RewriteCond $0 !=images/favicon.ico
RewriteRule ^([^/]+/)*favicon\.ico$ /images/favicon.ico [L]
RewriteEngine on
RewriteRule ^(.*)favicon\.ico /images/favicon.ico [L]
^^ फ्रंट में बहुत महत्वपूर्ण है –
यह मुझे एक आंतरिक सर्वर त्रुटि दे रहा है। क्या यह बीकॉज़ (। *) Favicon.ico भी /images/favicon.ico से मेल खाता है, इसलिए यह एक लूप बन जाता है – Tim
चेक किए गए त्रुटि लॉग और यह कहता है "संभावित कॉन्फ़िगरेशन त्रुटि के कारण अनुरोध 10 आंतरिक रीडायरेक्ट की सीमा पार हो गया है" तो ऐसा लगता है वास्तव में खुद को पुनर्निर्देशित कर रहा है। मैं उसके आसपास कैसे हो सकता हूं? – Tim
यह त्वरित पुनर्लेखन चाल करना चाहिए:
RewriteRule ^(.*)favicon.ico /images/favicon.ico
RewriteEngine on
RewriteRule ^favicon\.ico$ /images/favicon.ico [L]
:
मैं जानता हूँ कि प्रश्न टैग है .htaccess
लेकिन, क्यों एक सिमलिंक का उपयोग नहीं?
ln -s images/favicon.ico favicon.ico
पर पुनर्निर्देशित करना चाहता था क्योंकि तब मुझे साइट पर प्रत्येक निर्देशिका और उपनिर्देशिका में एक सिम्लिंक बनाना होगा – Tim
यह एक ऐसा समाधान है जो समय बचाने के बजाए काम करता है। – Mateng
यदि सर्वर रूट पर favicon.ico की तलाश में है और आप वहां नहीं हो सकते हैं, तो एक प्रतीकात्मक लिंक होगा ... मैं इसे अभी लागू करने जा रहा हूं (अपाचे से बंधे नहीं) लेकिन अगर इसकी आवश्यकता है एक प्रति-निर्देशिका आधार पर कर रहे हैं तो शायद यह विन्यास पर फिर से विचार करने का समय है ... – Alastair
किसी फ़ेविकॉन के लिए 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]
:
- सुनिश्चित करता है कि रीडायरेक्ट नियम अगर सही यूआरआई लागू नहीं होता अनुरोध किया जाता है (उदाहरण के लिए एक 301 रीडायरेक्ट ब्राउज़र कैश में सही फेविकॉन यूआरआई लिख देगा - और यदि ब्राउज़र सही यूआरआई का अनुरोध करता है तो यह लाइन नियम संसाधित करने से बचाती है)
- [एनसी] मतलब है कि यह केस संवेदी
RewriteCond %{HTTP_HOST} (.+)
नहीं कर रहा है:
- कठिन RewriteRule
में होस्ट नाम कोडिंग से बचने के लिए - - http होस्ट नाम को पुन: प्राप्त इसका मतलब है आप स्थानीय के बीच अपनी .htaccess फाइल को कॉपी कर सकते हैं/परीक्षण सर्वर और उत्पादन सर्वर समस्याओं के बिना (या अपने RewriteRule में अपनी नई साइट आधार यूआरएल को फिर से हार्डकोड करने की जरूरत है)
RewriteRule ^(.*)favicon\.(ico|gif|png|jpe?g)$ http://%1/images/favicon.ico [R=301, L]
:
- ^
regex की शुरुआत है
- +०१२३९१९७४७४२एक वाइल्डकार्ड समूह है - जिसका अर्थ है कि यूआरआई में favicon
शब्द से पहले शून्य या किसी भी संख्या में वर्ण हो सकते हैं (यानी यह वह हिस्सा है जो यूआरआई मैच में रूट निर्देशिका या किसी उपनिर्देशिका को शामिल करने की अनुमति देता है)
- \.(ico|gif|png|jpe?g)
जांच करता है कि यूआरआई विस्तार के .ico
, .gif
, .png
, .jpg
, .jpeg
किसी भी मेल खाता है - $
regex
का अंत है - http://%1/images/favicon.ico
पुनर्निर्देश url है - और यह होस्ट नाम हम पिछले RewriteCond
में लिया गया injects। ध्यान दें कि %1
को RewriteCond backreference कहा जाता है, इसका अर्थ यह है कि यह अंतिम RewriteCond
है जिसे पूरा किया गया है। (उदाहरण के लिए %2
द्वितीय-अंतिम RewriteCond
होगा जो पूरा हो गया है)
- R=301
का अर्थ है कि यह एक स्थायी रीडायरेक्ट है - जो ब्राउज़र कैश में रीडायरेक्ट को संग्रहीत करता है। परीक्षण करते समय सावधान रहें - आपको कोड परिवर्तनों के बीच ब्राउज़र कैश को हटाने की आवश्यकता होगी या रीडायरेक्ट अपडेट नहीं होगा। शायद इसे तब तक छोड़ दें जब तक आप नियमों को नहीं जानते।
- L
का अर्थ यह है कि इस .htaccess
फ़ाइल में इसका अंतिम रीडायरेक्ट का पालन किया जाए - आपको नियम बनाने के लिए इसकी आवश्यकता नहीं होगी क्योंकि ब्राउजर को सही यूआरएल पर निर्देशित करने के बाद लाइन 1 को पूरा नहीं किया जाएगा। लाइन 1 या L
के बिना रीवाइट्रूल का परिणाम स्थायी लूप होगा (चूंकि रीडायरेक्ट यूआरएल RewriteRule
परिस्थितियों को संतुष्ट रखेगा)। हालांकि, L
को किसी भी तरह से जोड़ने का अच्छा विचार है, यदि आपके पास फेविकॉन नियमों के बाद अन्य नियम हैं - क्योंकि favicon.ico अनुरोध पर, आप (संभवतः) निम्न नियमों को अनदेखा कर सकते हैं।
आपको कम से http://htaccess.mwl.be/
अंतिम नोट .htaccess
नियमों का परीक्षण कर सकते हैं:
- ध्यान रहे कि आप एक .htaccess
अपने उप-निर्देशिका के किसी भी में स्थित फ़ाइल में किसी भी अन्य RewriteRule की जरूरत नहीं है हो सकता है।
- जैसे यदि आप अपने www.mysite.com/
रूट फ़ोल्डर .htaccess
फ़ाइल में इस जवाब में कहें, अपने www.mysite.com/images/
फ़ोल्डर परिणामों के साथ छेड़छाड़ न कर सके में एक RewriteRule (.*) xxx
प्रकार नियम।
यह /favicon.ico के लिए काम करता है लेकिन /folder/favicon.ico के लिए नहीं है कुछ ब्राउज़र हैं स्थानीय फ़ोल्डर में favicon.ico का अनुरोध करने के बावजूद इसे /images/favicon.ico के रूप में निर्दिष्ट किया गया है, इसलिए मैं वर्तमान में असफल अनुरोधों को सही स्थान – Tim