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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top