CI初體驗for靜態頁面
第一次因為專案需要,而跟 PHP 後端工程師配合,我們選定了CI這套 framework 來使用,對於 CI 算是第一次接觸,因此想把從無到有的架設過程給記錄下來。
1、擁有 php 環境
Mac 內建 Apache,只要打開即可。
sudo apachectl start
2、安裝 CI
- 到官網下載整份文件檔
- 放進 server 的路徑下
/Library/WebServer/Documents/
- 安裝完畢!
3、讀取靜態頁面
新增頁面
此處新增名為 page.php 的檔案 application -> view -> cep(optional dir) -> page.php
新增 static files
如 CSS、JS 檔,習慣性會創建 assets 資料夾將他們放進去,並且放在跟 application 同階層的 dir 內,如圖。
新增 route
application -> config -> routes.php
新增如下:
$route['(:any)'] = 'cep/$1';
$route['default_controller'] = "cep";
$route['404_override'] = '';
新增 controller
在 controllers 資料夾內,新增 php 檔,內定新的 public function,參照 welcome.php 修改即可。
新增一個 class extends CI_Controller,裡面加上 page()這個 public function。
class Cep extends CI_Controller {
public function index()
{
$this->load->view('cep/index');
}
public function page()
{
$this->load->view('cep/page');
}
}
路徑修改
- application -> config -> config.php 改一行
$config['base_url'] = '/專案資料夾名字/';
- application -> config -> autoload.php 改一行
$autoload['helper'] = array('url');
原本是沒有 url,加上 url。 - page.php 這頁的 CSS 和 JS 檔,修改成
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/bootstrap.min.css">
<link rel="stylesheet" href="<?php echo base_url(); ?>assets/css/main.css">
<script src="<?php echo base_url(); ?>assets/js/vendor/modernizr-2.6.2.min.js"></script>
如此一來便可以在http://localhost/專案資料夾/index.php/page
看到靜態頁面了。
4、移除 CI URL 上的 index.php
因為每次網址上面都需要有 index.php,覺得不好看,因此兩個步驟把它改掉。
- 在 root 加上
.htaccess
檔,內容如下
RewriteEngine on
RewriteCond $1 !^(index\.php)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
- 修改 apache 設定,將 httpd.conf 改掉。 原本 AllowOverride none 改成 All 即可。
<Directory /Library/WebServer/Documents>
Options FollowSymLinks
AllowOverride All
</Directory>
- 重新啟動 apache
sudo apachectl restart
後記
因尚有其他專案,故本專案檔是全部在一個資料夾內,非直接在 web server 的 root 實作。