وزارة الدفاع إعادة كتابة تحميل ملفات وراء DocumentRoot
-
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>