وزارة الدفاع إعادة كتابة تحميل ملفات وراء DocumentRoot

StackOverflow https://stackoverflow.com/questions/8441

  •  08-06-2019
  •  | 
  •  

سؤال

أنا باستخدام .htaccess و mod_rewrite أشر إلى الملفات الموجودة خلف DocumentRoot.بلدي بنية المجلد يبدو مثل هذا:

home/
    webroot/
    other_files/

لدي .htaccess الملف في webroot مع المحتوى التالي:

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

إذا حاولت الوصول http://example.com/file.html لا تظهر رسالة الخطأ التالية:

URL المطلوب /home/other_files/file.html لم يتم العثور على هذا الخادم.

هل من الممكن تحميل ملفات وراء DocumentRoot?إذا كان الأمر كذلك, يمكن للشخص لي نقطة في الاتجاه الصحيح ؟

هل كانت مفيدة؟

المحلول

أعتقد أنك بحاجة إلى إضافة قسم

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

إلى تكوين الملقم الخاص بك قبل أباتشي سوف تكون قادرة على تقديم أي شيء من ذلك.على سبيل المثال ، DocumentRoot هو /فار/على شبكة الاتصالات العالمية ولكن هناك هذا القسم في الافتراضي المتاحة الموقع:

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 للذهاب إلى /doc/ و الخادم سوف تعرف أين يمكن الحصول على الملفات من.

نصائح أخرى

فقط لكي تعرف لماذا هذه القاعدة لا يعمل:

والسبب أنه ليس قادرا على إعادة كتابة /home/other\_files/file.html هو أن mod_rewrite هو تحليل المسار /home/webroot/home/other\_files/file.html لأن من mod_rewrite وجهة نظر السابقة مائل هو equivelant إلى المستند الخاص بك جذر /home/webroot.

ريان Ahearn اقتراح هو واحد لائق, و من المرجح الطريق الذي تريد أن تذهب.

الفضل في ذلك إلى ريان Aheam, ولكن انا ذاهب الى توضيح.أنا مبتدئ وحتى مع ريان الجواب كان لهذه التجربة مع عدد قليل من الأشياء للحصول على بناء الجملة الصحيح.

كنت أريد DocumentRoot أن تكون للكيك الدليل.ولكن بعد ذلك كان لي فرس النبي تعقب علة ذلك كان مجرد العادية php و لذلك لا يتوفر cakephp الدليل.من الملفات أدناه يجب العمل التالي.

http://www.my_website.com :يخدمها /var/www/للكيك

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 me@my_email.com                                                                             
    DocumentRoot /var/www/cakephp                                                                                   
    ServerName my_website.com                                                                                      
    <Directory /var/www/cakephp/>                                                                                   
        AllowOverride All                                                                                           
    </Directory>                                                                                                    
</VirtualHost>

ملف /var/www/للكيك/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^mantisbt/?$   /mantisbt/  [NC,L]
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top