Sono confuso con Apache vhost
Domanda
Sto costruendo un'applicazione web con Zend Framework, e ho bisogno di sottolineare la mia app nella cartella "pubblica" dell'applicazione:
Quindi, in pratica quando chiamo http://localhost/myapp
dovrebbe visualizzare http://localhost/myapp/public/
Ho creato un file host virtuale chiamata myapp in / 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>
Ma non funziona. Quando chiamo http: // localhost / myapp , visualizza la struttura delle directory delle app, e quando ho cliccare sul cartella "pubblica", quindi viene visualizzato quello che voglio da visualizzare di default ... Non ho mai configurato vhosts prima e questo è quanto ho ottenuto con il tutorial su di esso.
Soluzione 2
Ok ho trovato un modo in qualche modo ... non credo sia necessario il diritto / migliore dei modi, ma ...
in httpd.conf (nella cartella 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>
La mia app è ora accessibile tramite localhost: 10089 Dopo aver attivato il mod rewrite in Apache, ho aggiunto il .htaccess necessaria, uno alla radice della mia app, reindirizzando tutto per index.php (Zend supporto quadro accogliente navigazione URL e funziona in questo modo):
RewriteEngine on
RewriteRule .* index.php
e un secondo file .htaccess dentro la mia cartella pubblica per consentire alle persone di accedere .jpg, .ico, ecc file e non essere reindirizzato al indice per tutto:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
Spero che questo vi aiuterà un po '!
Altri suggerimenti
Nel tuo primo profilo, si aveva un valore diverso per il tag Directory, lasciando fuori 'pubblico' del tutto. C'era anche una barra finale dopo 'pubblico' nel valore docroot, ma rimosso sul secondo tentativo. Non sono sicuro che ha fatto la differenza, ma credo che si consiglia di non includere slash.
Inoltre, chiedo solo ... stai eseguendo questo su una macchina locale? Ho avuto problemi con Skype che vogliono utilizzare la porta 80 se ho iniziato a correre che prima il mio server apache. Skype userà una porta diversa se 80 è già in uso. In caso contrario Skype, ci può essere un altro app che sta usando la porta 80 e interferendo. Questo potrebbe essere il motivo per cui hai avuto successo su un'altra porta.