Nginx, Apache 設置 Laravel Routing


最近在搞一個小項目,由於小弟的 Server-side programming 的技術不高,而且要在安全性+程式碼的可讀性(自己寫完後看不懂 lol )上的考慮,就在網上找了一大堆 PHP Framework (原本考慮過不用 PHP的,想嘗試用年輕許多的 Node.JS,但受到之前的【Max-call-stack-size】跟【Memory Leakage】這些Bug 的心裡陰影,還是在自己的小項目做好了)。

比較過不同的 PHP Framework, 例如是Zend Framework、Cake PHP,還是要嘗試投進 Laravel Framework (回不了頭的選擇 :l)。為了更快的開始研究,就選擇了一個Starter Kit 來著手研究—— 來至 Snipe的  “snipe/laravel4-starter"

初始的網頁界面
初始的網頁界面

設定過程——如果已經有laravel Frame 可以使用,可以直接略過

設定的過程可以說是無痛的,因為網上都有很多的文章可以參考。

  1. 【Git Clone】: 把 Snipe的  “snipe/laravel4-starter" Clone 到自己的開發環境,留意Server 的 Document Root 有沒有設定正確
  2. 【設定 Starter-kit】: 如果你是用這個Starter-kit 才需要做這個步驟。看ReadMe 檔: https://github.com/snipe/laravel4-starter/blob/master/readme.md
  3. 【修改public Folder】: 如果你不是整個Server 都是由Laravel Frame 搭建的,建議把 laravel4-starter/public 檔案夾裡的文件都移動出來。
  4. 然後就到了這教學的重點—— Routing: 因為Server 的Setup 沒有預設到可以Route 的

 Laravel Routing in Apache —— mod_rewrite + AllowOverride

  1. 啟用 Apache 的一個 Module—— mod_rewrite:
    • 開啟 Apache檔案夾裡的 httpd.conf
    • 搜尋【LoadModule rewrite_module modules/mod_rewrite.so】
    • 把Comment Mark 鏟掉—— Delete “#"
  2. 修改 Directory 的AllowOverride
    • 繼續編輯 httpd.conf
    • 找到要編輯的 (e.g.) <Directory “E:\local_host_dev\www">
    • 在【】的範圍內,找到 “AllowOverride None"。如果是 “None" 的,把它修改成 “AllowOverride All"

(e.g.)

<Directory />
    # 這個控制 Server Root 的所有文件
    AllowOverride none
    Require all denied
</Directory>
<directory "e:\local_host_dev\www"=""> 
    # 這個針對某一個Folder 的控制
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted 

Laravel Routing in Nginx – nginx.conf

  1. 打開在 nginx 檔案夾裡的 nginx.conf
  2. 找到【Server {…}】
  3. 在裡面加上一個跟 【location / {}】差不多的代碼,跟一句非常重要的語句
    • 【try_files $uri $uri/ /laravel_testing/index.php$is_args$args;】
    • 用途就是讓Server 遇到某一個location 的時候,要不找找檔案,找不到就 遞送一個 Argument 到 index.php ,讓那個 php 處理一下

(e.g.)

server { 
    location / { 
        index index.php index.html index.htm; 
    } 
    location /laravel_testing { 
        # 設定 laravel_testing 這個在【E:\local_host_dev\www】的Folder
        index index.php index.html index.htm;
        # 先找找 index 相關的檔案
        try_files $uri $uri/ /laravel_testing/index.php$is_args$args;
        # 找找路徑要的檔案,找不到,就遞送到網址里的 index.php 做 argument
    } 
}

參考

塗牆

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s