2016-02-04 9 views
6

मैं जानना चाहता हूं कि अतिरिक्त सुरक्षा के लिए संबंधित दस्तावेज़ रूट को बदलने का कोई तरीका है या नहीं। मैं निम्न उदाहरण के माध्यम से अपने आप को समझाने की कोशिश करेंगे:वेब सर्वर व्यवहार में दस्तावेज़ रूट कैसे बदला जा सकता है?

/root 
    /app 
    /public 

वेब सर्वर पर www.example.com अनुरोध root फ़ोल्डर को इंगित होता कहो।
मैं सोच रहा था कि कॉन्फ़िगरेशन था, उदाहरण के लिए .htaccess फ़ाइल root फ़ोल्डर में स्थित फ़ाइल के माध्यम से, जो सर्वर को public फ़ोल्डर को इंगित करता है, इसलिए किसी भी दूरस्थ पथ हमेशा public फ़ोल्डर के सापेक्ष होते हैं।
इस उदाहरण में, www.example.com/apppublic के अंदर app फ़ोल्डर के अंदर app फ़ोल्डर के बजाय फ़ोल्डर के बजाय फ़ोल्डर के अनुरोध के लिए अनुरोध करेगा, जो बाद में दूरस्थ यूआरएल अनुरोध से पहुंच योग्य नहीं होगा।
इसी तरह, www.example.com/public हमारे रूट public फ़ोल्डर के अंदर public फ़ोल्डर का अनुरोध करेगा और आगे।

मैं this one कि एक कस्टम .htaccess विन्यास का उपयोग कर का उल्लेख कुछ इसी तरह प्राप्त करने के लिए की तरह विभिन्न विषयों पढ़ा है, लेकिन यह अनुरोध यूआरएल के मैनुअल विन्यास की आवश्यकता है फ़ाइल कहा में है, जबकि मेरा इरादा यह कोई आगे विन्यास के बिना काम करने के लिए है कोई फर्क नहीं पड़ता कि आप आवेदन होस्ट करते हैं। मैंने देखा है कि एक और संभावित समाधान .htaccess फ़ाइल के माध्यम से एक कठिन पुनर्निर्देशन कर रहा है, जो वास्तव में कुछ भी हल नहीं करता है।

इस पोस्ट को संपादित करने के लिए स्वतंत्र महसूस करें क्योंकि मुझे अपना पॉइंट पूरा करने का प्रयास करने में कठिनाई हो सकती है।

+0

आप पूरे सर्वर तक पहुँच है? या आपके पास सिर्फ एक सीपीनल या समान है? –

+0

सीपीएनल, और यह विचार है कि इसे अधिकांश प्रकार की होस्टिंग पर किस्त के लिए तैयार किया जाए। इसलिए मैंने किसी गतिशील समाधान के लिए क्यों पूछा, यदि कोई हो। – Dante

+0

आम तौर पर, साझा होस्टिंग में (और आप एक समर्पित व्यक्ति के मामले में भी ऐसा ही कर सकते हैं), आपकी साइट 'public_html' फ़ोल्डर में जाती है। आप इसके बाहर किसी अन्य फाइल को रख सकते हैं, और आपको कुछ भी संशोधित करने की आवश्यकता नहीं है। क्या यह आपके लिए काम नहीं करता है? यदि नहीं, क्यों? क्षमा करें अगर मुझे अभी तक आपकी समस्या नहीं मिली है। –

उत्तर

2

मेरा सुझाव है कि आप अपने सर्वर को सार्वजनिक फ़ोल्डर में किसी भी तरह इंगित करें, क्योंकि यह अधिक सुरक्षित है, आप देख सकते हैं कि सभी ढांचे एक ही तरीके से व्यवहार करते हैं, उनके सभी में एक "सार्वजनिक" फ़ोल्डर होता है जहां सर्वर इंगित करता है।

सार्वजनिक फ़ोल्डर में आप अपनी स्क्रिप्ट के लिए प्रवेश की एक बिंदु, जैसे

index.php 

है और इस प्रविष्टि से आप अपने आवेदन के साथ संवाद करेंगे।

बेशक आप अभी भी अनुरोध किए गए तरीके से काम कर सकते हैं, और यह बहुत अच्छा काम करेगा, लेकिन कौन जानता है कि आप कुछ याद करेंगे और कोई आपकी "आंतरिक" फ़ाइलों तक पहुंच और देख सकता है।

+0

जो मैंने पढ़ा है उससे जो मैंने एकत्र किया है और जो मुझे मिला है, उससे मैं जो करना चाहता हूं, उससे ऐसा करना संभव नहीं है क्योंकि दस्तावेज रूट स्पष्ट रूप से हल हो गया है इससे पहले कि अपाचे को एचटीएसीएसी की तलाश हो फ़ाइल, और उस स्थानीय अनुरोध को htaccess के माध्यम से संशोधित नहीं किया जा सकता है। किसी सार्वजनिक फ़ोल्डर को देखने के लिए सर्वर को सेट करना या इसे मैन्युअल रूप से सेट करना केवल एकमात्र सुरक्षित विकल्प लगता है। जवाब के लिए धन्यवाद। – Dante

7

आप इस सरल .htaccess फ़ाइल का उपयोग कर सकते हैं:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/
    RewriteCond %{REQUEST_URI} !^/public/ 
    RewriteRule ^(.*)$ /public/$1 [L] 
</IfModule> 

अपने सर्वर पर कोई भी अनुरोध सार्वजनिक फ़ोल्डर को इंगित करेंगे।

सार्वजनिक फ़ोल्डर के अंदर आप अपनी साइट नियमों को संभालने वाली अतिरिक्त .htaccess फ़ाइल जोड़ सकते हैं।

+0

यह सापेक्ष पथ को नहीं बदल रहा है, बस किसी भी अनुरोध को सार्वजनिक फ़ोल्डर में रीडायरेक्ट करने का प्रयास कर रहा है। – Dante

+1

क्या अंतर है? अगर कोई 'http: // www.example.com/css/style.css' कहता है तो उसे वास्तविक पुनर्लेखन को देखे बिना सार्वजनिक फ़ोल्डर से फ़ाइल प्राप्त होगी। –

+0

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

1

आप अपाचे वेब सर्वर पर हैं? अगर मैं सही ढंग से समझता हूं, तो आप वर्चुअल डायरेक्टरीज़ की तलाश में हैं। आम तौर पर, हमें नेटवर्क से एप्लिकेशन को सुलभ बनाने के लिए अपाचे के दस्तावेज़ रूट के अंदर अपना वेब एप्लिकेशन रखना होगा। हालांकि, वेब एप्लिकेशन को अभी भी सुलभ बनाने के लिए एक चाल है, भले ही हम इसे अपाचे के दस्तावेज़ रूट से बाहर रखें। कृपया यहां उस पर पढ़ें: http://w3shaman.com/article/creating-virtual-directory-apache W3Shaman.com को क्रेडिट, जाहिर है।

3

इसके अलावा आप एक वेबसर्वर पर कई साइटों को होस्ट कर सकते हैं। आप VirtualHosts बनाने को जोड़ सकते हैं और उर्फ ​​

पहले उल्लेख किया है इस उदाहरण में mod_alias का उपयोग करते समय आप के लिए एक अनुरोध प्राप्त (या तो समर्पित या VPS)

VirtualHosts का उपयोग कर आप वेब सर्वर पर बता सकते हैं अपने खुद के सर्वर है माना जाता है एक विशिष्ट फ़ोल्डर से सामग्री की सेवा के लिए www.example.com।

एक उदाहरण यह वर्चुअलहोस्ट है:

<Virtualhost *:80> 
ServerName ^domain_or_ip^ 

DocumentRoot ^path of the public folder^ 

DirectoryIndex index.php home.php index.html index.htm 

ErrorLog ^path for a file containing php errors^ 
CustomLog ^path for logging whitch browser and ip visited your site^ combined 
</Virtualhost> 
संबंधित मुद्दे