移除 public 結尾

http://laravel.com/

http://kejyun.github.io/Laravel-4-Docum ... roduction/
回覆文章
yehlu
Site Admin
文章: 3245
註冊時間: 2004-04-15 17:20:21
來自: CodeCharge Support Engineer

移除 public 結尾

文章 yehlu »

http://blog.tonycube.com/2015/01/laravel-23-public.html

假設網站目錄為 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/blog 或 www.myblog.com/blog 來開啟網站,結尾不需要再加 public 了。
回覆文章

回到「laravel」