移除 public 結尾
Laravel 框架中,唯一對外公開的目錄只有 public,這也是為什麼我們連入網站時,網址的最後面都要加 public,可是這樣實在不太好看,這節就要說明如何將它從網址中移除。
網址、主網域、網站目錄
假設最後想要使用的網址型式,有 3 種,對應到後面說明的 3 種方法:
www.myweb.com (方法1或2)
www.myweb.com/blog/ (方法3)
blog.myweb.com (方法2)
那主網域就會是:
假設網站目錄為 blog,並且放在 www 目錄下,完整路徑為 /var/www/blog。
設定
方法1 - 單一網站
如果你的網站伺服器只打算有一個網站,而且不打算使用虛擬網站。
編輯 Apache 的設定檔 httpd.conf,將 DocumentRoot 指定到 /var/www/blog/public,例如:
這樣表示網站的根目錄直接指向 public。接著只要設定 DNS 的 A 主機為 www 即可。
方法2 - 虛擬網站
如果網站伺服器中有多個網站,可以使用虛擬網站來設定,編輯 Apache 的設定檔 httpd.conf (新版本的設定檔可能將 VirtualHost 的部份移到另一個獨立檔案),找到 \ (通常在檔案的最尾端),將它的 DocumentRoot 指定到 /var/www/blog/public,例如:
DocumentRoot /var/www/blog/public ServerName www.myweb.com
這樣表示你要使用 www.myweb.com 當網址,DNS 指定 A 主機為 www。
如果要使用 blog.myweb.com 當網址,則把 ServerName 改成 blog.myweb.com,同時 DNS 新增一個 CNAME 名稱為 blog。
方法3 - 移動 public 目錄
這裡假定你的 DNS 已經有 A 主機,名稱是 www。
前面兩種方法都是透過設定伺服器的設定檔,將網站的 DocumentRoot 指定到 public。方法 3 則是直接移動 Laravel 網站的 public 目錄,將它放到網站根目錄,但是必須調整 Laravel 中的路徑設定。
1.移動 public 到網站根目錄
將 blog 下的 public 移動到網站根目錄,等於和 blog 同一目錄,像這樣:
2.目錄重新命名
將原本的 blog 改為其他名稱,例如:blog-web,名稱自訂,使用者看不到這個目錄。接著 public 改為 blog,這個就是要讓使用者開啟的網站目錄。
結果:
3.修改設定
修改原本的 public (現改名為 blog) 目錄下的 index.php
原本
改為
說明:
這裡要調整路徑,因為 public 目錄被往上提了一層,和原目錄成為同一層,所以必須在原本的路徑中加入 /blog-web 。_DIR_ 是指 public 目錄本身。
接著修改 blog-web 目錄下的 bootstrap/paths.php
原本
改為
也是路徑的調整。.. 是指父層目錄。
現在這個 blog 目錄就是這個網站的進入點,它會連結到 blog-web 去執行整個網站的程式。網址會是:
Last updated