Je suis confus avec Apache vhost
Question
Je construis une application Web avec Zend Framework, et je dois pointer mon application dans le dossier « public » de l'application:
Donc, fondamentalement, quand je l'appelle http://localhost/myapp
il devrait afficher http://localhost/myapp/public/
J'ai créé un fichier hôte virtuel appelé myapp dans / etc / apache2 / sites disponibles /:
<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>
Mais cela ne fonctionne pas. Quand j'appelle http: // localhost / monappli, il affiche la structure de répertoire de l'application, et quand je clique sur le dossier « public », il affiche ce que je veux afficher par défaut ... Je ne ai jamais configuré avant et vhosts c'est aussi loin que je suis arrivé avec les tutoriels à ce sujet.
La solution 2
Ok j'ai trouvé une façon en quelque sorte ... Je ne pense pas qu'il soit nécessaire le droit / meilleure façon, mais ...
dans httpd.conf (dans le dossier 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>
Mon application est maintenant accessible via localhost: 10089 Après avoir activé le mod de réécriture dans apache, j'ai ajouté le .htaccess nécessaire, un à la racine de mon application, redirigeant tout à index.php (support Zend Framework navigation url convivial et fonctionne de cette façon):
RewriteEngine on
RewriteRule .* index.php
et un second fichier .htaccess dans mon dossier public pour permettre aux gens d'accéder .jpg, Ico, fichiers etc et ne pas être redirigé vers l'index pour tout:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
Espérons que cela aidera certains!
Autres conseils
Dans votre première liste, vous aviez une valeur différente pour la balise Directory, laissant de « public » tout à fait. Il y avait aussi un slash après la valeur docroot « public », mais retiré de votre deuxième tentative. Je ne sais pas qui a fait une différence, mais je crois qu'il est recommandé de ne pas inclure des barres obliques de fuite.
Aussi, me demandais ... vous utilisez ce sur une machine locale? J'ai eu des problèmes avec Skype voulant utiliser le port 80 si je commencé à courir avant que mon serveur apache. Skype utilisera un port différent si 80 est déjà utilisé. Sinon Skype, il peut y avoir une autre application qui est en utilisant le port 80 et interférer. Cela pourrait être la raison pour laquelle vous avez eu du succès sur un autre port.