أنا مرتبك مع Apache Vhost
سؤال
أنا أقوم ببناء تطبيق ويب مع إطار Zend، وأحتاج إلى توجيه تطبيقي إلى مجلد "العام" للتطبيق:
لذلك أساسا عندما اتصل http://localhost/myapp
يجب أن يعرض http://localhost/myapp/public/
قمت بإنشاء ملف مضيف افتراضي يسمى MyApp Int / ETC / Apache2 / المواقع المتاحة /:
<VirtualHost *:80>
DocumentRoot /var/www/myapp/public/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/myapp/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
لكنه لا يعمل. عندما اتصلت http: // localhost / myapp, ، يعرض بنية الدليل للتطبيق، وعندما نقر على المجلد "العام"، فإنه يعرض ما أريد أن يتم عرضه افتراضيا ... لم أكن أبدا vhosts من قبل وهذا ما حصلت عليه مع البرامج التعليمية حوله.
المحلول 2
حسنا، لقد وجدت طريقة بطريقة أو بأخرى ... لا أعتقد أنها ضرورية الطريق الصحيح / الأفضل ولكن ...
في httpd.conf (في مجلد Apache2):
Listen 10089
<VirtualHost *:10089>
DocumentRoot "/var/www/myapp/public"
<Directory "/var/www/myapp/public">
Order allow,deny
Allow from all
AllowOverride all
</Directory>
</VirtualHost>
أصبح تطبيقي الآن من خلال LocalHost: 10089 بعد تمكين وزارة الدفاع إعادة كتابة في Apache، أضفت. HTACCESSS الضرورية، واحدة في جذر تطبيقي، إعادة توجيه كل شيء إلى index.php (ZEND Framework يدعم الملاحة الصديقة URL ويعمل بهذه الطريقة) في
RewriteEngine on
RewriteRule .* index.php
وملف .htaccess الثاني داخل مجلد العمومي الخاص بي للسماح للناس بالوصول إلى .jpg، .ico، إلخ الملفات وعدم إعادة توجيهها إلى الفهرس لكل شيء:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
آمل أن يساعد هذا بعض!
نصائح أخرى
في قائمةك الأولى، كان لديك قيمة مختلفة لعلامة الدليل، وإخراج "الجمهور" تماما. كان هناك أيضا مائل زائدة بعد "العامة" في قيمة docroot، ولكن إزالتها في محاولتك الثانية. لست متأكدا من جعل الفرق، لكنني أعتقد أنه ينصح بأنك لا تشمل الخطوط الزائدة.
أيضا، فقط أتساءل ... هل تقوم بتشغيل هذا على جهاز محلي؟ واجهت مشكلة مع Skype الرغبة في استخدام المنفذ 80 إذا بدأت تشغيل ذلك قبل خادم Apache الخاص بي. سيستخدم Skype منفذا مختلفا إذا تم استخدام 80 بالفعل. إذا لم يكن Skype، فقد يكون هناك تطبيق آخر يستخدم المنفذ 80 وتداخل. قد يكون هذا هو السبب في أن لديك نجاحا على منفذ آخر.