Ich bin verwechselt mit Apache Vhost
Frage
Ich erstelle eine Webanwendung mit Zend Framework und muss meine App in den "öffentlichen" Ordner der Anwendung verweisen:
Also im Grunde genommen, wenn ich anrufe http://localhost/myapp
Es sollte angezeigt werden http://localhost/myapp/public/
Ich habe eine virtuelle Host-Datei namens MyApp in/etc/apache2/sites-verfügbare erstellt/:
<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>
Aber es funktioniert nicht. Wenn ich anrufe http: // localhost/myapp, Es wird die Verzeichnisstruktur der App angezeigt, und wenn ich auf den Ordner "Public" klicke, wird angezeigt, was ich standardmäßig angezeigt werden soll ... Ich habe Vhosts noch nie konfiguriert, und das ist so weit wie ich mit den Tutorials gekommen bin darüber.
Lösung 2
Ok, ich habe irgendwie einen Weg gefunden ... ich denke nicht, dass es den richtigen/besten Weg notwendig ist, aber ...
In httpd.conf (im Ordner 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>
Meine App ist jetzt über Localhost: 10089 zugänglich, nachdem ich den Umschreiben des Umschreibens in Apache aktiviert habe. Ich habe das notwendige .htaccess, einen an der Wurzel meiner App hinzugefügt, um alles auf index.php umzuleiten (Zend Framework Support Friendly URL -Navigation und funktioniert auf diese Weise) :
RewriteEngine on
RewriteRule .* index.php
und eine zweite .htaccess -Datei in meinem öffentlichen Ordner, mit dem Menschen auf .JPG, .ICO usw. Dateien zugreifen können und nicht zum Index für alles weitergeleitet werden:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
Hoffe das wird einigen helfen!
Andere Tipps
In Ihrer ersten Auflistung hatten Sie einen anderen Wert für das Verzeichnis -Tag und ließen 'öffentlich' insgesamt. Es gab auch einen nachfolgenden Schrägstrich nach "Öffentlichkeit" im Docroot -Wert, wurde jedoch bei Ihrem zweiten Versuch entfernt. Ich bin mir nicht sicher, dass das einen Unterschied gemacht hat, aber ich glaube, es wird empfohlen, keine nachfolgenden Schrägstriche einzuschließen.
Ich frage mich auch nur ... laufen Sie auf einer lokalen Maschine? Ich hatte Probleme mit Skype, um Port 80 zu verwenden, wenn ich vor meinem Apache -Server mit dem Ausführen begann. Skype verwendet einen anderen Port, wenn bereits 80 verwendet wird. Wenn nicht Skype, kann es eine andere App geben, die Port 80 verwendet und sich stört. Das könnte der Grund sein, warum Sie Erfolg in einem anderen Hafen hatten.