2010-10-10 16 views
11

मैं एक htaccess फ़ाइल जो नक्शे इनको फिर से लिखने संबंधित पथ

http://www.myserver.com/home/
http://www.myserver.com/index.php?section=home

के इस भाग को ठीक काम करता है है टूट जाता है। मुद्दा मैं अब है का सामना करना पड़ रहा है, मेरे सभी छवियों और सीएसएस, एक उप-फ़ोल्डर नामित संपत्ति में रहते हैं यानी

http://www.myserver.com/assets/images/
http://www.myserver.com/assets/css/
आदि

पुनर्निर्देशन ब्राउज़र

http://www.myserver.com/home/assets/images/
जो बातें तोड़ने के लिए कारण बनता है के तहत फ़ाइलों के लिए दिखेगा के बाद, के रूप में यह एक वैध पथ नहीं है।

मैं एक फिर से लिखने कि सही उप फ़ोल्डर में ऊपर नक्शे को जोड़ने के लिए सक्षम किया गया है, हालांकि, Firebug पता चलता है कि छवियों में रह रहे हैं:

http://www.myserver.com/home/assets/images/

मैं जानता हूँ कि यह वास्तव में एक समस्या नहीं है, सब के बाद, मेरी छवियों और सीएसएस इस नियम के साथ बस ठीक लोड कर रहे हैं। मैं इस बारे में उत्सुक हूं कि मैं पथ को वास्तविक पथ के रूप में कैसे दिखा सकता हूं, जो है:

http://www.myserver.com/assets/images/

नीचे मेरी htaccess फ़ाइल चिपका रहा है। पहले से बहुत बहुत धन्यवाद।

Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^([^/]+)/assets/(css|images|js)/(.*)$ /assets/$2/$3 [NC,L] 
RewriteRule ^([^/]+)/$ /index.php?section=$1 [NC,L]

उत्तर

15

समस्या यह है कि आप पर विचार नहीं किया है कि सापेक्ष URL आधार यूआरआई HTML दस्तावेज़ संदर्भ में प्रयोग किया जाता है के URI है कि पर हल कर रहे हैं। तो एक HTML दस्तावेज में assets/images/ की तरह एक सापेक्ष URI पथ यूआरआई पथ /home//assets/images/ के बजाय /home/assets/images/ पर हल किया गया है।

आप इसे mod_rewrite के साथ नहीं बदल सकते क्योंकि यूआरआई रिज़ॉल्यूशन क्लाइंट द्वारा किया जाता है, न कि सर्वर द्वारा। केवल समाधान हैं:

  • परिवर्तन आधार यूआरआई BASE element का उपयोग कर (ध्यान दें कि यह प्रभावित करता सभी सापेक्ष URI);
  • पूर्ण यूआरआई पथ का उपयोग करते हुए, उदा। एक रिश्तेदार assets/images/ के बजाय /assets/images/;
  • सापेक्ष यूआरआई पथ को समायोजित करते हुए, /home/ में संदर्भ पथ गहराई को दर्शाने के लिए ../assets/images/ में समायोजित किए गए हैं।
+0

मैं पूर्ण करने के लिए अपने सभी संबंधित पथ परिवर्तित करने के रास्ते जाने के लिए है करने के लिए नहीं की कोशिश कर रहा था, लेकिन अफसोस, मैं शायद अभी करना है। फिर फिर, मैं

BASE
टैग के बारे में पूरी तरह से भूल गया! उसने जादू की तरह काम किया। धन्यवाद गम्बो, इसकी सराहना करते हैं। – irot

+0

@irot: फिर, ध्यान दें कि 'BASE' का उपयोग कर आधार यूआरआई को बदलना * सभी * सापेक्ष यूआरआई को प्रभावित करता है न कि केवल सापेक्ष पथ वाले। – Gumbo

+0

यह हैश के साथ एंकर टैग को भी प्रभावित करता है। "#content" जैसे href विशेषता वाले किसी भी एंकर टैग को मूल URL पर हल किया जाएगा, न कि वर्तमान पृष्ठ। – VirtuosiMedia

9

निम्नलिखित के रूप में <head> टैग के अंदर अपने पृष्ठ के लिए इस लाइन <BASE href="http://www.yoursitename.com/"> जोड़ें:

<head> 
     <title>Your site title</title> 
     <BASE href="http://www.yoursitename.com/"> 
.... 
</head> 
संबंधित मुद्दे