2010-03-09 6 views

उत्तर

21

इस नियम का प्रयास करें संपादित और favicon.ico मनमाना पथ सेगमेंट गहराई के साथ के लिए:

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

यह /favicon.ico के लिए काम करता है लेकिन /folder/favicon.ico के लिए नहीं है कुछ ब्राउज़र हैं स्थानीय फ़ोल्डर में favicon.ico का अनुरोध करने के बावजूद इसे /images/favicon.ico के रूप में निर्दिष्ट किया गया है, इसलिए मैं वर्तमान में असफल अनुरोधों को सही स्थान – Tim

3
RewriteEngine on 

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

^^ फ्रंट में बहुत महत्वपूर्ण है –

+2

यह मुझे एक आंतरिक सर्वर त्रुटि दे रहा है। क्या यह बीकॉज़ (। *) Favicon.ico भी /images/favicon.ico से मेल खाता है, इसलिए यह एक लूप बन जाता है – Tim

+0

चेक किए गए त्रुटि लॉग और यह कहता है "संभावित कॉन्फ़िगरेशन त्रुटि के कारण अनुरोध 10 आंतरिक रीडायरेक्ट की सीमा पार हो गया है" तो ऐसा लगता है वास्तव में खुद को पुनर्निर्देशित कर रहा है। मैं उसके आसपास कैसे हो सकता हूं? – Tim

0

यह त्वरित पुनर्लेखन चाल करना चाहिए:

RewriteRule ^(.*)favicon.ico /images/favicon.ico 

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

:

-1

मैं जानता हूँ कि प्रश्न टैग है .htaccess लेकिन, क्यों एक सिमलिंक का उपयोग नहीं?

ln -s images/favicon.ico favicon.ico 
+1

पर पुनर्निर्देशित करना चाहता था क्योंकि तब मुझे साइट पर प्रत्येक निर्देशिका और उपनिर्देशिका में एक सिम्लिंक बनाना होगा – Tim

+0

यह एक ऐसा समाधान है जो समय बचाने के बजाए काम करता है। – Mateng

+0

यदि सर्वर रूट पर favicon.ico की तलाश में है और आप वहां नहीं हो सकते हैं, तो एक प्रतीकात्मक लिंक होगा ... मैं इसे अभी लागू करने जा रहा हूं (अपाचे से बंधे नहीं) लेकिन अगर इसकी आवश्यकता है एक प्रति-निर्देशिका आधार पर कर रहे हैं तो शायद यह विन्यास पर फिर से विचार करने का समय है ... – Alastair

1

किसी फ़ेविकॉन के लिए 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 प्रकार नियम।