2011-08-26 16 views
5

मैं mod_rewrite के साथ बहुत अच्छा नहीं हूं लेकिन मुझे वास्तव में इसकी आवश्यकता है।रिवाइटरूल एक फ़ोल्डर को छोड़कर सब कुछ पुनर्निर्देशित करें

मेरे पास site नामक फ़ोल्डर में पूरी नई वेबसाइट है। इसलिए यदि आपको नई वेबसाइट पर जाना है तो यूआरएल http://domain.com/site/... जैसा दिखेगा। अब मुझे यूआरएल से को बाहर करने की जरूरत है, लेकिन नामक एक फ़ोल्डर के लिए इसे अभी भी /site/ EXCEPT पर इंगित करें। मैं यह कैसे कर सकता हूँ?

तो http://domain.com/anything.ext और http://domain.com/anyfolderdomain.com/upload जो अभी भी domain.com/upload के लिए अंक के अलावा http://domain.com/site/... को इंगित करेंगे।

फिर एक और सवाल, मान लीजिए कि यह केवल अस्थायी समाधान के लिए अच्छा है या क्या यह वास्तव में मायने रखता है (गति और दक्षता की सोच)?

उत्तर

7

(यह मानते हुए आप अपने दस्तावेज़ जड़ में एक .htaccess फ़ाइल में नियम लगा रहे हैं) का उपयोग करें:

:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^upload 
RewriteRule (.*) site/$1 [L] 

आप इसे httpd.conf में डाल रहे हैं, तो आप इसे थोड़ा बदलने की जरूरत है

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/upload 
RewriteRule (.*) /site$1 [L] 

दूसरे प्रश्न के संबंध में, मुझे व्यक्तिगत रूप से mod_rewrite पसंद नहीं है और निश्चित रूप से इसे स्थायी समाधान के रूप में उपयोग नहीं करेंगे जबतक कि आपको बिल्कुल नहीं करना चाहिए। ऐसा इसलिए है क्योंकि mod_rewrite काफी अक्षम है, खासकर व्यस्त सर्वर पर, क्योंकि इसे प्रत्येक आने वाले अनुरोध पर कम-से-कम एक नियमित अभिव्यक्ति चलाना पड़ता है। आपको यह सुनिश्चित करने के लिए हमेशा [L] ध्वज का उपयोग करना चाहिए ताकि आवश्यकतानुसार कोई और नियम संसाधित न हो।

यह आपकी निर्देशिकाओं को उसी तरह से संरचित करने के लिए हमेशा अधिक कुशल है जैसे एप्लिकेशन उन्हें संदर्भित करता है। उपर्युक्त आपको काम करना चाहिए, लेकिन इसे बहुत लंबे समय तक छोड़ने की कोशिश न करें।

मुझे यकीन है कि आप इसे पहले से जानते हैं, लेकिन here mod_rewrite दस्तावेज़ है।

+0

जब मैं इसका उपयोग करता हूं (.htaccess कोड) यह एक आंतरिक सर्वर त्रुटि दिखाता है। मुझे यह नहीं मिला कि क्या गलत है। – Boyd

+0

त्रुटि मिलने पर आपका अपाचे लॉग क्या कहता है? ;-) – DaveRandom

+0

मेरे क्लाइंट होस्टिंग कंपनी गधे में दर्द हो रही है। वे htaccess मुद्दों पर समर्थन नहीं देते हैं और इसलिए मुझे कोई लॉग भेजना नहीं चाहते हैं .. उन्होंने कहा था कि उन्होंने किसी भी htaccess कार्यों को सीमित नहीं किया है। मेरा कोड मानना ​​ठीक है, मुझे सिर्फ होस्टिंग कंपनी से संपर्क करना चाहिए या आंतरिक सर्वर त्रुटि का कोई अन्य कारण हो सकता है? (यह न भूलें कि यह केवल तब दिखाता है जब .htaccess में ऊपर से कोड होता है) – Boyd

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