2008-08-12 21 views
12

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

home/ 
    webroot/ 
    other_files/ 

मैं निम्नलिखित सामग्री के साथ webroot में एक .htaccess फ़ाइल है:

The requested URL /home/other_files/file.html was not found on this server.

:

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

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

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

उत्तर

11

मैं आप अपने सर्वर विन्यास को

<Directory "/home/other_files"> 
    (options) 
</Directory> 

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

Alias /doc/ "/usr/share/doc/" 
<Directory "/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 
</Directory> 

फिर आप कोई URL रीराइट सकता/डॉक पर जाने के लिए/और जहां पाने के लिए सर्वर पता होगा से फाइलें

+0

अच्छा जवाब! धन्यवाद –

+0

मैंने अनुभाग के बिना दस्तावेज़ रूट के बाहर निर्देशिका में एलियास की कोशिश की और यह काम किया ... – Pere

0

आपकी जानकारी के लिए क्यों कि नियम काम नहीं करता:

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

Ryan Ahearn's suggestion एक सभ्य व्यक्ति है, और संभवतः वह मार्ग है जिसे आप जाना चाहते हैं।

0

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

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

http://www.my_website.com:/var/www/CakePHP द्वारा सेवा

http://www.my_website.com/mantisbt: द्वारा सेवा/var/www/html/mantisbt

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

Alias /mantisbt/ "/var/www/html/mantisbt/"                   
<Directory "/var/www/html/">                       
    AllowOverride All                        
</Directory>                           

<VirtualHost *:80>                         
    ServerAdmin [email protected]_email.com                    
    DocumentRoot /var/www/cakephp                     
    ServerName my_website.com                      
    <Directory /var/www/cakephp/>                     
     AllowOverride All                       
    </Directory>                          
</VirtualHost> 

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

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^mantisbt/?$ /mantisbt/ [NC,L] 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule>