سؤال

أنا أقوم ببناء تطبيق ويب مع إطار 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 وتداخل. قد يكون هذا هو السبب في أن لديك نجاحا على منفذ آخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top