2012-07-23 8 views
5

मुझे mod_rewrite स्थिति/नियम के साथ एक अजीब समस्या है।mod_rewrite css और js फ़ाइलों को लोड नहीं कर रहा है

यह वह स्थिति और नियम है जिसका मैं उपयोग कर रहा हूं।

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.*)$ index.php?params=$1 [QSA,L] 

मेरे समस्या यह है कि अगर मैं www.example.com पर जाएँ और www.example.com/page यह ठीक लोड करता है लेकिन जब मैं लोड करने का प्रयास www.example.com/page/category यह पृष्ठ लोड लेकिन नहीं कर सकते सीएसएस और जावास्क्रिप्ट पाएं। यह उन्हें/निर्देशिका के बजाय पृष्ठ/सीएसएस से लोड करने का प्रयास करता है।

मैंने जो भी गलत किया है, उसके बारे में कोई विचार? मैं यहाँ पर एक खोज किया था और कुछ चीजें जोड़ने

RewriteCond $1 !\.(js|ico|gif|jpg|png|css|html|swf|mp3|wav|txt)$ 

और

RewriteRule ^(images|css|javascript)(.*)$ index.php?params=$1 [QSA,L] 

लेकिन वह ज्यादा फर्क नहीं मालूम था की तरह की कोशिश की।

पढ़ने

उत्तर

2

समस्या के लिए धन्यवाद है कि एक मूक पुनर्लेखन एक अलग निर्देशिका पथ से एक पृष्ठ पर देख रहे हैं कि वे वास्तव में कर रहे हैं विज़िटर के वेब ब्राउज़र से नहीं कहेंगे।

तो/पृष्ठ के लिए एक अनुरोध ब्राउज़र (सही ढंग से) को छोड़ देता है कि यह वेब सर्वर पर शीर्ष-स्तर की सार्वजनिक निर्देशिका में संसाधनों को देख रहा है, जैसे छवियां और सीएसएस फ़ाइलें।

लेकिन ब्राउज़र/गलत श्रेणी के लिए अनुरोध ब्राउज़र को गलत तरीके से छोड़ देता है और यह सोच रहा है कि यह एक संसाधन को देख रहा है जो पेज नामक उप-निर्देशिका में है। तो जब ब्राउज़र सीएसएस और छवि फ़ाइलों के लिए अनुरोध भेजता है, तो यह सर्वर से/पृष्ठ/उप-निर्देशिका में उन्हें देखने के लिए कहता है, जो वास्तव में मौजूद नहीं है। तो जब ब्राउज़र छवि और सीएसएस फ़ाइलों को लाने की कोशिश करता है तो सर्वर 404 कोड देता है।

इस के आसपास जाने का एक तरीका सीएसएस, छवि और अन्य पृष्ठ-संदर्भित संसाधनों को पथों को पूर्ण पथ में बदलने के लिए है। उन्हें एक फॉरवर्ड-स्लैश के साथ शुरू करें ताकि वे वास्तविक शीर्ष-स्तरीय सार्वजनिक निर्देशिका के सापेक्ष लंगर हों। यह संभवतः आगे बढ़ने का सबसे अच्छा तरीका है यदि आपके पास अपडेट करने के लिए केवल संसाधन पथों की एक छोटी संख्या है। उदाहरण के लिए, बदलने के लिए:

src="image-name.png" 

में

src="/image-name.png" 

यह एक निरपेक्ष पथ का उपयोग कर फ़ाइल का अनुरोध करने के बजाय एक रिश्तेदार पथ के आधार पर गलत स्थान अनुमान ब्राउज़र बाध्य करेगा।

एक RewriteCond की आवश्यकता को दूर करने के लिए, आप करने के लिए अपने फिर से लिखना बदल सकते हैं निम्नलिखित:

RewriteRule ^([a-z]+(?:/[a-z]+)*)$ index.php?params=$1 [QSA,L] 

यह कुछ भी जो एक अवधि (डॉट) प्रतीक होता है, इसलिए छवि और सीएसएस फ़ाइलों के लिए अनुरोध से मेल नहीं खाएगी होगा छोड़ा जाना

1

क्या आपने अभी base element का उपयोग करके विचार किया है, और छवियों से पहले "/" को हटाया है?

संबंधित मुद्दे