2016-06-11 7 views
0

Ich möchte meine ZF2-Anwendung auf einem VPS-Server ohne Unterstützung für Virtual Host installieren. Ich benutze eine einfache Anwendung basierend auf ZendApplicationSkeleton.ZF2 Apache auf VPS installieren, ohne Virtual Host zu erstellen

Ich bin die Standard mit .htaccess:

RewriteEngine On 
# The following rule tells Apache that if the requested filename 
# exists, simply serve it. 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
# The following rewrites all other queries to index.php. The 
# condition ensures that if you are using Apache aliases to do 
# mass virtual hosting, the base path will be prepended to 
# allow proper resolution of the index.php file; it will work 
# in non-aliased environments as well, providing a safe, one-size 
# fits all solution. 
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ 
RewriteRule ^(.*) - [E=BASE:%1] 
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L] 

Alle Lösung Ive in SO gefunden für mich nicht funktioniert. Sie können ZF1 passen, aber nicht ZF2:

Link 1

Link 2

Link 3

Link 4

Meine Anwendung in einem Ordner /var/www/html/testapp benannt ist.

Die Hauptseite wird geladen, sobald ich im Browser localhost/testapp/public eintippe. Auch mein Modul wird geladen, wenn ich localhost/testapp/module tippe, aber Navigation funktioniert nicht.

Dh: in der Hauptseite erstellt Ive eine Schaltfläche wie:

<a href="/module/index">Go To Module</a> 

Aber wenn ich darauf klicke ich navigieren zu localhost/login/indexNot Found, nicht auf die richtige module/index.phtml Seite zeigt.

Hilfe damit gewürdigt.

+0

Welchen Hosting-Service verwenden Sie? Ich kann kaum glauben, dass es keine Möglichkeit gibt, den gewünschten Ordner einzurichten. – Wilt

+0

Sieht so aus, als ob Sie eine Art von Anmelde-/Authentifizierungsüberprüfung haben, die zu localhost/login/index umleitet, wenn der Link/module/index zugreift. Überprüfen Sie Ihren Login/Authenticator und stellen Sie sicher, dass die Weiterleitung deaktiviert ist, wenn Sie keine Anmeldung benötigen (Dev-Zweck). – xangxiong

+0

Auch für ZF2-Anwendungen sollte der öffentliche Ordner das Stammverzeichnis Ihrer Webanwendung sein. Daher müssen Sie Ihren VHOST so konfigurieren, dass er/var/www/html/testapp/public als DocumentRoot verwendet. Da sich Ihre App in/var/www/html befindet, versucht die Apache-Standardkonfiguration möglicherweise auch, die Dateien direkt bereitzustellen, was zu URLs führen kann, die keiner Ihrer ZF2-Routendefinitionen entsprechen. Es ist wahrscheinlich am besten, Ihre App außerhalb des Verzeichnisses/var/www/html zu verschieben, sodass alle privaten Konfigurationen/Dateien nicht versehentlich geöffnet werden können, wenn etwas mit Ihrer Serverkonfiguration passiert. – xangxiong

Antwort

1

Ihr Problem hat nichts mit der Serverkonfiguration zu tun. Da sich Ihre App in einem Unterordner befindet, ist die Verknüpfung falsch. Es müsste etwas wie

<a href="/testapp/public/module/index">Go To Module</a> 

sein, damit es funktioniert. public/ sollte jedoch niemals in Ihren URLs erscheinen. Mit den auf diese Weise eingerichteten Dingen können Benutzer Dateien außerhalb des Webstamms Ihrer App anzeigen, was ein potenzielles Sicherheitsrisiko darstellt (und zu hässlichen URLs führt).

Die Lösung besteht darin, einen separaten vhost für Ihre ZF2-App einzurichten, der eine DOKUMENTROOT auf den öffentlichen Ordner der App zeigt. Wenn Sie Probleme damit haben, posten Sie das als Ihre Frage; oder wenn Sie erklären können, warum das nicht möglich ist, können wir vielleicht weiter beraten.

+0

@Wilt: Ich bin mir nicht sicher, was Sie sind vorschlagen, indem Sie einfach auf das ZF2 Tutorial verlinken. Die Verwendung eines vhost ist die echte Lösung hier. Wenn das das ist, was du vorschlägst, sind wir uns beide einig.Der Beispiellink, den ich gab, war nur um zu erklären, warum das, was das OP derzeit hat, nicht funktioniert. –

+0

Fair genug. Du wirst sehen, dass ich einen Kommentar zu deiner anderen Antwort geschrieben habe, die mit dir übereinstimmt. Ich habe meine Antwort hier bearbeitet, um klarer zu machen, was die wirkliche Lösung ist. –

+0

Ich entfernte meine Kommentare und upvoted, könnten Sie immer noch entfernen "hat nichts mit Server-Konfiguration zu tun", weil es eigentlich alles damit zu tun hat ... – Wilt