我想在不支持虛擬主機的情況下將我的ZF2應用程序安裝在VPS服務器上。我正在使用基於ZendApplicationSkeleton的簡單應用程序。ZF2安裝在VPS上的Apache無需創建虛擬主機
I'm使用默認.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]
所有解決方案中從來就發現,因此不會爲我工作。他們可能適合ZF1,但不ZF2:
我的應用程序是一個名爲/var/www/html/testapp
文件夾中。
在瀏覽器上我輸入了localhost/testapp/public
這個主頁面。如果我輸入localhost/testapp/module
,我的模塊也會被加載,但導航不起作用。
即:在主要頁面,從來就創建了一個按鈕,如:
<a href="/module/index">Go To Module</a>
但如果我點擊它,我瀏覽到localhost/login/index
顯示Not Found
,不正確的module/index.phtml
頁面。
幫助讚賞與此。
您使用哪種託管服務?我幾乎不相信有沒有可能以某種方式設置你想要服務的文件夾? – Wilt
看起來您有某種登錄/身份驗證檢查,當鏈接/模塊/索引訪問時,它會重定向到localhost/login/index。檢查您的登錄名/身份驗證器,並確保如果您不需要登錄(dev目的),重定向被禁用 – xangxiong
此外,對於ZF2應用程序,公用文件夾應該是您的web應用程序的根目錄。所以你需要配置你的VHOST使用/ var/www/html/testapp/public作爲DocumentRoot。此外,由於您的應用程序位於/ var/www/html中,因此默認的Apache配置可能也會嘗試直接提供這些文件,這可能會導致網址與您的任何ZF2路由定義不匹配。最好將你的應用移動到/ var/www/html目錄之外,這樣如果你的服務器配置發生什麼事情,所有私人配置/文件都不能被意外訪問 – xangxiong