2010-02-09 6 views
1

Je construis une application Web avec Zend Framework, et je dois pointer mon application dans le dossier « public » de l'application:Je suis confondu avec Apache vhost

Donc, fondamentalement, quand je l'appelle http://localhost/myapp il se doit affichage http://localhost/myapp/public/

J'ai créé un fichier hôte virtuel appelé myapp dans/etc/apache2//-disponibles sites:

<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 il ne fonctionne pas. Quand j'appelle http://localhost/myapp, il affiche la structure de répertoire de l'application, et quand je clique sur le dossier "public", alors il affiche ce que je veux être affiché par défaut ... Je n'ai jamais configuré vhosts avant et c'est aussi loin que J'ai eu avec les tutoriels à ce sujet.

Répondre

0

Ok j'ai trouvé une façon en quelque sorte ... Je ne pense pas qu'il soit nécessaire le droit/la 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 rewrite dans apache, j'ai ajouté le .htaccess nécessaire, un à la racine de mon application, redirigeant tout vers index.php (Zend framework supporte la navigation par URL amicale et fonctionne de cette manière):

RewriteEngine on 

RewriteRule .* index.php 

et un second fichier .htaccess dans mon dossier public pour permettre aux gens d'accéder .jpg, Ico, etc fichiers et ne pas être redirigés 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!

1

Dans votre première liste, vous aviez une valeur différente pour le tag d'annuaire, en supprimant complètement «public». Il y avait aussi une barre oblique après 'public' dans la valeur DocRoot, mais supprimée lors de votre deuxième tentative. Je ne suis pas sûr que cela ait fait une différence, mais je crois qu'il est recommandé de ne pas inclure les barres obliques.

En outre, je me demandais ... exécutez-vous ceci sur une machine locale? J'ai eu des problèmes avec Skype voulant utiliser le port 80 si j'ai commencé à l'exécuter avant mon serveur apache. Skype utilisera un port différent si 80 est déjà utilisé. Si ce n'est pas Skype, il se peut qu'une autre application utilise le port 80 et interfère. Cela pourrait être la raison pour laquelle vous avez eu du succès sur un autre port.