跳至主要內容

PHP 原生伺服器路由研究

PHP 下載完成後,使用 php -S localhost:8000 就可以建立一個伺服器,完全不需要阿帕契伺服器。This article is about creating server routing from scratch without Apache server with php.

基礎路由(routing)

在 php 本身提供的伺服器中,在哪個資料夾中執行 php -S localhost:8000,localhost:8000 這個網址就會找到哪個資料夾裡面的 index.php 或是 index.html 檔案,然後提供到前端頁面上。

如果輸入的網址沒有給任何的副檔名,伺服器也會抓 index.php 或是 index.html 檔案,然後提供到前端頁面上。

但是如有給提供附檔名,例如 http://localhost:8000/about.php,這邊的網址有 .php,伺服器就會找資料夾中是否有 about.php 這個檔案,然後提供到前端去。

自訂路由

我們可以運用 php 原生伺服器不提供附檔名網址就會導向提供 index.php 或是 index.html 這個特性來撰寫路由。

我們用 $_SERVER[REQUEST_URI] 這個內建全域變數來做。

當網址是 http://localhost:8000/about 時,$_SERVER[REQUEST_URI] 就是 /about。

接下來我們可以運用 switch case 或是 if statements 來建立路由。當然,也需要建立幾個頁面,舉例來說,home.php 跟 about.php。

最後,只要在用 require 或是 include 來提供頁面。

程式碼範例

<h1>This is my header</h1>
<a href="/">Home</a>
<a href="/about">About</a>
<hr>

<?php
    switch($_SERVER["REQUEST_URI"]){
        case "/":
            require "home.php";
            break;
        case "/about":
            require "about.php";
            break;
        default:
                require "404.php";
    }

?>

<hr>
<h1>This is my footer</h1>

留言

此網誌的熱門文章

What這個字怎麼念?

我在美國念大學的時候,有一次我說了這個字what,結果大家都笑了,並且之後有人為了揶揄我,還學我說what的方式。 我在台灣英文學到高中,大學學測英文滿級分,托福也考過了,卻連what一個字都念不好。 經過研究,多數美國人what是念whut,也就是嘴巴不用張大,輕輕的帶過搭u這個音。 這邊的u音是想說的but或是up裡面的u,輕輕短短的。 What不要念成whaaat,這邊的a不是"阿",嘴巴張大大的哦。是u像是but。

英文逐步口譯筆記經驗談

這篇文章是我自己在擔任口譯時做筆記的經驗。 逐步口譯筆記重要性 很重要,長逐步口譯,當講者語畢,實際上只能看著筆記要點翻譯,根本不可能回想,講者剛剛說了甚麼,如果筆記沒記到,很有可能會漏翻。 大量符號 長逐步口譯筆記主要使用自己習慣的符號,或是上場前準備時,就先預設一些符號。 轉折語氣別忘記 有時候講者在表述一個論點時,會先以反向論點開始說,然後才轉折語氣,進入重點。我自己是用 but 代表「但是」、「可是」、「然而」。 並列詞 美國人常常用並列詞,也就是列出許多例子來印證一件事。我筆記方式是用一個直線。 像是這個例子,我很喜歡動物,像是貓、狗、鳥類都喜歡。 數字筆記訣竅 聽到當下要用要翻成的語言做筆記,例如 130 thousand,直接記13W。 常用記號

Cors 基礎設定

建立一個 API 伺服器要設定 Access-Control-Allow-Origin,這樣別的網站才能呼叫, Koa  如果適用 Koa,只要做一個 mideleware 設定即可。 app.use(async (ctx, next) => { ctx.set('Access-Control-Allow-Origin', '*'); await next(); }); Express app.use(async (ctx, next) => { res.set('Access-Control-Allow-Origin', '*') }); 如果只允許一個網域呼叫 將 * 換成該網域即可。 如果允許多個網域呼叫 使用 Swich 的方式,先讀取前端傳來得 headers.origin 來決定設定的 access 即可。3 其他設定 另外,還有 Access-Control-Allow-Methods 跟  Access-Control-Allow-Headers 可以設定,舉例來說,最近我做了一個 Koa.js 應用程式,就要設定 Access-Control-Allow-Headers 包括 content-type 才能傳送 post 請求。