假設網站目錄為 blog,完整路徑為
方法 3 會做成
在 Laravel 中,主要對外的目錄為 public,所以這裡的設定方法,全都離不開將連入的網址指向 public 目錄的動作。
/var/www/blog
;再假設主網域是 myblog.com
,要將 laravel 網站以 www 加主網域的方式呈現,可以使用方法 1 或方法 2 達成(要設定 DNS A 主機為 www)。方法 3 會做成
www.myblog.com/blog
,如果要變成 blog.myblog.com
並不需要使用方法 3,只要設定 DNS 的 CNAME 為 blog,再使用方法 2 去設定即可。在 Laravel 中,主要對外的目錄為 public,所以這裡的設定方法,全都離不開將連入的網址指向 public 目錄的動作。
方法1 - 單一網站
你的 Apache 伺服器只有一個網站,不存在其他虛擬網站。在 Apache 的設定檔 httpd.conf 中,將 DocumentRoot 指定到 /var/www/blog/public,例如:
DocumentRoot /var/www/blog/public
*需設定 DNS 的 A 主機為 www,這樣你就會有 www.myblog.com 的網站。
方法2 - 多個虛擬網站
將<VirtualHost>
的 DocumentRoot 指定到 /var/www/blog/public,例如:
<VirtualHost *:80>
DocumentRoot /var/www/blog/public
ServerName www.myblog.com
</VirtualHost>
你可以把 ServerName 改成 blog.myblog.com,但是必須在 DNS 中新增名稱 "blog" 的 CNAME。*需設定 DNS 的 A 主機為 www。或 CNAME 為 blog。
方法3 - 移動 public 目錄
*無需設定DNS。因為在 laravel 框架中, public 目錄是網站的顯示根目錄,所以只要將它移動到網站根目錄,就可以直接顯示,但是有些必要的檔案要修改。
1. 移動 public 到網站根目錄
將 blog 下的 public 移動到網站根目錄,等於和 blog 同一目錄。2. 目錄改名
將原本的 blog 改為其他名稱,例如:blog-web。名稱自訂,這裡只會影響我們的設定檔,與使用者無關。接著將原本的 public 改為 blog,這裡就是要讓使用者開啟的網站目錄。
結果原本的:
(1) /var/www/blog
(2) /var/www/blog/public
變成(1) /var/www/blog-web
(2) /var/www/blog
3. 修改設定
修改原本的 public (現改名為 blog) 目錄下的 index.php原本
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
改為
require __DIR__.'/../blog-web/bootstrap/autoload.php';
$app = require_once __DIR__.'/../blog-web/bootstrap/start.php';
接著修改 blog-web 目錄下的 bootstrap/paths.php原本
'public' => __DIR__.'/../public',
改為
'public' => __DIR__.'/../../blog',
現在,就可以使用
localhost/blog
或 www.myblog.com/blog
來開啟網站,結尾不需要再加 public 了。
我要留言
留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。