2013-07-20 59 views
0

所以我遇到了一個問題,我無法找到任何資源。我試圖用apache和varnish運行laravel。它工作正常,但有一個例外,所有的網址都添加了Apache運行的端口(8080)。所以,當我去的鏈接:使用apache和清漆laravel

http://localhost/ 

它工作正常,但所有的網站上的鏈接都出現了類似:

http://localhost:8080/about-us 

我有清漆端口80和Apache運行上運行端口8080.我很確定,這是清漆導致的問題,因爲當我運行它只是在端口80上的Apache,它的工作原理沒有添加在端口。有誰知道如何繞過它添加端口。我無法通過谷歌找到關於此問題的任何信息。

+0

你能發佈你的vcl後端定義嗎?我很確定,在這種情況下,Varnish不是應該指責的人,而是lavarel的默認網址重寫 – NITEMAN

回答

0

我不是PHP天才,但我知道的所有Web框架都使用入站請求中的主機頭來生成非相對鏈接(側面問題:爲什麼當資源在相同的位置時呈現絕對URL?主機在第一位?)。

所以,如果在你的VCL你改寫請求的或後端要求的(bereq)主機頭爲localhost:8080一拉

set req.http.Host = "localhost:8080"; 

set bereq.http.Host = "localhost:8080"; 

或做同樣的事情在Apache中,這就是導致問題的原因。如果不是這樣,PHP使用服務器運行的端口而不是主機頭來構造URL,這幾乎是普遍不希望的行爲,並且可能是由於您的配置錯誤造成的。