DocumentRoot के पीछे फ़ाइलों को लोड करने के लिए मॉड-रीवाइट करें

मैं दस्तावेज़ कोड के पीछे रहने वाली फ़ाइलों को इंगित करने के लिए .htaccess और mod_rewrite का उपयोग कर रहा हूं। मेरी फ़ोल्डर संरचना इस तरह दिखती है:

home/
    webroot/
    other_files/

मेरे पास निम्नलिखित सामग्री के साथ वेबूट में .htaccess फ़ाइल है:

RewriteEngine on
RewriteRule ^(.*)$ /home/other_files/$1

अगर मैं http://example.com/file.html तक पहुंचने का प्रयास करता हूं तो मुझे निम्न त्रुटि मिलती है:

अनुरोधित URL /home/other_files/file.html इस सर्वर पर नहीं मिला था।

क्या दस्तावेज़ रूट के पीछे मौजूद फ़ाइलों को लोड करना भी संभव है? यदि हां, तो क्या कोई मुझे सही दिशा में इंगित कर सकता है?

0
ro fr bn

3 उत्तर

बस इतना आप जानते हैं कि वह नियम क्यों काम नहीं करता है:

कारण यह है कि यह /home/other\_files/file.html पर फिर से लिखने में सक्षम नहीं है, यह है कि mod_rewrite पथ को पार्स कर रहा है /home/webroot/home/other \ _files/file.html चूंकि mod_rewrite के बिंदु से पूर्ववर्ती स्लैश /home/webroot के आपके दस्तावेज़ रूट के बराबर है।

Ryan Ahearn's suggestion is a decent one, and is likely the route you want to go.

0
जोड़ा

मेरा मानना ​​है कि आपको एक सेक्शन जोड़ने की जरूरत है


  (options)

अपाचे से पहले आपके सर्वर कॉन्फ़िगरेशन में इससे कुछ भी करने में सक्षम हो जाएगा। उदाहरण के लिए, मेरा DocumentRoot/var/www है लेकिन डिफ़ॉल्ट रूप से उपलब्ध साइट में यह अनुभाग है:

Alias /doc/ "/usr/share/doc/"

    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128

फिर आप/doc/पर जाने के लिए एक यूआरएल फिर से लिख सकते हैं और सर्वर को पता चलेगा कि फाइल कहां से प्राप्त करें।

0
जोड़ा
मैंने एलियास को किसी दस्तावेज़ निर्देशिका के बाहर दस्तावेज़ निर्देशिका के बिना किसी निर्देशिका में करने की कोशिश की और यह काम किया ...
जोड़ा लेखक Pere, स्रोत
अच्छा उत्तर ! धन्यवाद
जोड़ा लेखक Gabriel Sosa, स्रोत

क्रेडिट रयान अहमम जाता है, लेकिन मैं इसे जादू करने जा रहा हूं। मैं एक नौसिखिया हूं और यहां तक ​​कि रयान के जवाब के साथ मुझे सिंटैक्स सही करने के लिए कुछ चीजों के साथ प्रयोग करना पड़ा।

मैं चाहता था कि मेरा DocumentRoot मेरी केकफ़्पी निर्देशिका हो। लेकिन फिर मेरे पास एक मंटिस बग ट्रैकर था जो केवल नियमित PHP था और इसलिए केकफ़्प निर्देशिका में नहीं था। नीचे दी गई फाइलों में निम्नलिखित कार्यरत हैं।

http://www.my_website.com : served by /var/www/cakephp

http://www.my_website.com/mantisbt : served by /var/www/html/mantisbt

फ़ाइल /etc/httpd/conf/httpd.conf

Alias /mantisbt/ "/var/www/html/mantisbt/"                                                                          
                                                                                        
    AllowOverride All                                                                                               
                                                                                                        

                                                                                                  
    ServerAdmin [email protected]_email.com                                                                             
    DocumentRoot /var/www/cakephp                                                                                   
    ServerName my_website.com                                                                                      
                                                                                       
        AllowOverride All                                                                                           
                                                                                                        

फ़ाइल /var/www/cakephp/.htaccess


    RewriteEngine on
    RewriteRule    ^mantisbt/?$   /mantisbt/  [NC,L]
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]

0
जोड़ा