Estoy confundido con el host virtual Apache
Pregunta
Estoy construyendo una aplicación web con Zend Framework, y tengo que señalar mi aplicación a la carpeta de "público" de la aplicación:
Así que, básicamente, cuando llamo http://localhost/myapp
debe mostrar http://localhost/myapp/public/
He creado un archivo de host virtual llamado miaplicacion en / etc / apache2 / sites-available /:
<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>
Pero no funciona. Cuando llamo http: // localhost / miaplicacion , se muestra la estructura de directorios de la aplicación y, cuando haga clic en el carpeta "pública", a continuación, muestra lo que quiero que se mostrará por defecto ... Nunca configurado vhosts antes y eso es por lo que yo tengo con los tutoriales al respecto.
Solución 2
Ok he encontrado una manera de alguna manera ... Yo no creo que sea necesario la derecha / mejor manera, pero ...
en httpd.conf (en la carpeta 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>
Mi aplicación es ahora accesible a través de localhost: 10089 Después de habilitar el mod de reescritura de Apache, he añadido el .htaccess necesario, uno en la raíz de mi aplicación, redirigiendo todo para index.php (Zend soporte de la infraestructura de navegación amigable URL y funciona de esa manera):
RewriteEngine on
RewriteRule .* index.php
y un segundo archivo .htaccess dentro de mi carpeta pública para permitir a las personas acceder .jpg, ico, etc archivos y no se redirige al índice para todo:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
Esperamos que esto ayude un poco!
Otros consejos
En el primer listado, que tenía un valor diferente para la etiqueta Directorio, dejando fuera 'público' por completo. También había una barra al final después de 'público' en el valor docroot, pero elimina en su segundo intento. No estoy seguro de que hizo una diferencia, pero creo que se recomienda que no se incluye barras al final.
Además, sólo me preguntaba ... ¿estás ejecutando esto en una máquina local? Tuve problemas con Skype que deseen utilizar el puerto 80 si empecé a correr antes de que mi servidor Apache. Skype usará un puerto diferente si el 80 ya se utiliza. Si no es Skype, puede haber otra aplicación que está utilizando el puerto 80 e interfiriendo. Eso podría ser por qué tuvo éxito en otro puerto.