2011-04-26 18 views
9

के माध्यम से रूट फ़ोल्डर को बदलना मेरे पास एक डोमेन नाम और रूट फ़ोल्डर से जुड़े एक साझा होस्टिंग खाता है (यदि यह गलत शब्द है तो मुझे सही करें) / पर सेट है ताकि सर्वर पर सभी फ़ाइलें सार्वजनिक/ब्राउज़र के माध्यम से सुलभ।.htaccess

क्या मैं .htaccess या रूट फ़ोल्डर को /example.com/public/ जैसे कुछ बदलने के लिए उपयोग कर सकता हूं?

उत्तर

21

मैं सही ढंग से समझ रहा हूँ, तो निम्न कार्य करना चाहिए

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/public/ 
RewriteRule ^(.*)$ /public/$1 [L,R=301] 

यह सभी अनुरोधों कि URL है, जो करता है के /public/ के साथ शुरू नहीं करते पर पहुंच जाएंगे।

आशा है कि मदद करता है।

+0

धन्यवाद, @clmarquart! क्या होगा यदि हमें '/ example.com/index.html 'या'/example.com/index.php' पर जाने के लिए '/ example.com /' रखना है? – moey

+0

रीवाइटबेस/अपने रिवाइटकंड से पहले यह लाभदायक भी हो सकता है। विशेष रूप से यदि आप VirtualDocumentRoot निर्देशों का उपयोग कर रहे हैं। – zmonteca

+0

धन्यवाद यह मदद की ... –

6

DocumentRoot directive केवल .htaccess फ़ाइल में सेट नहीं किया जा सकता है, केवल सर्वर कॉन्फ़िगरेशन में। जैसा कि आपके पास सर्वर सेटिंग्स को संशोधित करने के लिए विशेषाधिकार नहीं हैं, आपका एकमात्र समाधान कुछ रीराइट जादू का उपयोग clmarquart already mentioned के रूप में करना है।

5

इस तरह मैं हमेशा अपने ढांचे में इसका इस्तेमाल होता है: यह उपयोगी है जब आप साझा होस्टिंग पर हैं, और एक से अधिक डोमेन है :

Rewritecond %{REQUEST_FILENAME} !-f 
RewriteRule (.*) /example.com/public/$1 [L,NC] 

RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule !^example.com/public/(.*) /example.com/public/$1 [L,NC] 
+0

यह मुझ पर काम नहीं किया ... –

0

मैं bluehost का उपयोग करें ... यह है कि क्या मेरे लिए काम करता है नाम।

आपका प्राथमिक डोमेन public_html के लिए निर्धारित है, लेकिन अपने ऐड-ऑन डोमेन public_html

अंदर सबफ़ोल्डर हैं यह तो आप सब अपने प्राथमिक डोमेन नाम फ़ाइलों के साथ मिलाया जा राशि की जरूरत नहीं है बनाता है डोमेन फ़ोल्डरों ऐड-ऑन ... प्रत्येक डोमेन अपने फ़ोल्डर में हो सकता है ...

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www.)?PUTYOURDOMAINNAMEHERE.com$ 
RewriteCond %{REQUEST_URI} !^/PUTYOURFOLDERHERE/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /PUTYOURFOLDERHERE/$1 
RewriteCond %{HTTP_HOST} ^(www.)?PUTYOURDOMAINNAMEHERE.com$ 
RewriteRule ^(/)?$ PUTYOURFOLDERHERE/ [L] 
Options +SymLinksIfOwnerMatch