2016-06-11 104 views
0

我想在不支持虛擬主機的情況下將我的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:

Link 1

Link 2

Link 3

Link 4

我的應用程序是一個名爲/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頁面。

幫助讚賞與此。

+0

您使用哪種託管服務?我幾乎不相信有沒有可能以某種方式設置你想要服務的文件夾? – Wilt

+0

看起來您有某種登錄/身份驗證檢查,當鏈接/模塊/索引訪問時,它會重定向到localhost/login/index。檢查您的登錄名/身份驗證器,並確保如果您不需要登錄(dev目的),重定向被禁用 – xangxiong

+0

此外,對於ZF2應用程序,公用文件夾應該是您的web應用程序的根目錄。所以你需要配置你的VHOST使用/ var/www/html/testapp/public作爲DocumentRoot。此外,由於您的應用程序位於/ var/www/html中,因此默認的Apache配置可能也會嘗試直接提供這些文件,這可能會導致網址與您的任何ZF2路由定義不匹配。最好將你的應用移動到/ var/www/html目錄之外,這樣如果你的服務器配置發生什麼事情,所有私人配置/文件都不能被意外訪問 – xangxiong

回答

1

您的問題與服務器配置無關。由於您的應用程序位於子文件夾中,因此鏈接有誤。它將需要像

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

它的工作。但是,public/絕不應出現在您的網址中。通過這種方式設置,您允許用戶查看應用程序Web根目錄之外的文件,這是潛在的安全風險(並導致難看的URL)。

解決方案是爲您的ZF2應用程序設置一個單獨的虛擬主機,該應用程序具有指向應用程序公用文件夾的DOCUMENT ROOT。如果您遇到問題,請將其作爲您的問題發佈;或者如果你能解釋爲什麼這是不可能的,或許我們可以進一步提供建議。

+0

@Wilt:我不確定你是什麼建議通過簡單鏈接到ZF2教程。使用虛擬主機是真正的解決方案。如果這就是你的建議,那麼我們都同意。我給出的示例鏈接只是爲了解釋爲什麼OP目前有什麼不起作用。 –

+0

夠公平的。你會看到我發佈了對你的其他答案贊同你的評論。我在這裏編輯了我的答案,使其更加清楚真正的解決方案。 –

+0

我刪除了我的評論,並提出了上傳,你是否仍然可以刪除「與服務器配置無關」,因爲它實際上與此有關...... – Wilt