2008-11-24 13 views
5

इस विषय पर अधिक जानकारी नहीं लगती है इसलिए मैं अपनी विशिष्ट समस्या को रेखांकित करने जा रहा हूं, तो शायद हम प्रश्न और उत्तर को कुछ और सार्वभौमिक रूप में आकार दे सकते हैं।मॉडलिंग-रीराइटिट ट्रेलिंग स्लैश इश्यू

मैं इस पुनर्लेखन नियम

RewriteEngine On 
RewriteBase /bookkeepers/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/?$ index.php?franchise=$1 

परिवर्तन है कौन इस URL

http://example.com/location/kings-lynn 
यह एक

http://example.com/location/index.php?franchise=kings-lynn 

समस्या मैं कर रहा हूँ है में

है कि अगर मैं पीछे जोड़ने स्लैश

http://example.com/location/kings-lynn/ 

तो क्वेरी स्ट्रिंग के रूप में

franchise=kings-lynn/ 

और मेरे CSS और Javascript फ़ाइलों के किसी कारण से कोई भी लोड किया जा रहा है के लिए दिया जाता है।

कोई विचार?

+0

मैंने नियमित अभिव्यक्ति मिलान के बारे में एक उत्तर पोस्ट किया है। सीएसएस/जावास्क्रिप्ट समस्या को ठीक करने के लिए, आपको यह देखने के लिए सर्वर लॉग को देखना चाहिए कि क्या अनुरोध किया जा रहा है। आपको उस RRriteRule में एक [आर, एल] जोड़ना पड़ सकता है, लेकिन मैंने उस हिस्से को कभी नहीं समझा है। –

उत्तर

10

जैसा कि @ पॉल टॉम्बलिन ने कहा, + लालची हो रही है; यानी, यह जितना हो सके उतना मिलान कर रहा है।

^(.+[^/])/?$ इसे किसी भी चीज़ से मेल खाने के लिए कहता है, उसके बाद एक वर्ण नहीं है, उसके बाद एक वैकल्पिक /। इसका पिछला/कैप्चरिंग कैप्चर करने का असर नहीं है।

आपके सीएसएस और जावास्क्रिप्ट काम नहीं करते सबसे संभावित कारण यह है कि आप एक सापेक्ष पथ का उपयोग कर रहे हैं, जैसे src = "my.js"। जब कोई पिछला स्लैश होता है, तो यह एक निर्देशिका की तरह दिखता है, इसलिए आपका ब्राउज़र /location/kings-lynn/my.js की तलाश करेगा। आप इसे अपनी फ़ाइलों के पूर्ण पथ (उदा। /location/my.js) का उपयोग कर ठीक कर सकते हैं।

6

ऐसा लगता है कि (। +) लालची मिलान किया जा रहा है। उस स्थिति में, आप

RewriteRule ^(.+[^/])/?$ index.php?franchise=$1 

यह सुनिश्चित कर सकता है कि पहला समूह (ब्रैकेट में) स्लैश में समाप्त नहीं होता है।

+0

अच्छा। इसने मेरी पिछली स्लैश समस्या तय की (लेकिन सीएसएस मुद्दे की कमी नहीं)। मान लीजिए कि आप यह कैसे काम कर सकते हैं इस बारे में बात कर सकते हैं? – Binarytales

+0

नियमित अभिव्यक्ति किसी समूह से मेल खाती है जिसमें किसी भी अक्षर के 1 या अधिक होते हैं, उसके बाद स्लैश के अलावा किसी भी चरित्र के बाद। समूह के बाहर आप वैकल्पिक रूप से स्लैश से मेल खाते हैं। मेरे बदलाव से पहले, समूह में स्लैश समाप्त हो सकता है। –

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