Laravel 學習筆記(23) - 移除 public 結尾

Laravel public

假設網站目錄為 blog,完整路徑為 /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/blogwww.myblog.com/blog 來開啟網站,結尾不需要再加 public 了。
本文網址:http://blog.tonycube.com/2015/01/laravel-23-public.html
Tony Blog 撰寫,轉載時請註明出處及文章連結,謝謝 😀

我要留言

留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。