跳到主要內容

[野人獻曝]Apache上的Mod_rewrite的實作說明(中-1)

在前篇文章,我拿了Cakephp的rewrite規則來作一些基本的說明,
因此在接下來幾篇文章中,會針對幾個情境來試著實作,
請各位看看吧,如果有錯的地方也請多多指教!

案例一:

某案主:我的網站是用PHP寫成的,因此我的網站都會有像這樣的網址:
http://xxx.com/index.php

可是我不想讓別人知道這個網站是用php的,
所以我想要把.php改成.do(通常是用java之類的網頁),
(像是http://xxx.com/index.do)
當然啦,如果你能把.php除掉的話也可以啦!
(像是http://xxx.com/index)


針對某案主的要求,
我們可以先擬出以下基本的rewrite規則:

1<IfModule mod_rewrite.c>
2 RewriteEngine On
3
4 RewriteRule ([a-zA-Z0-9_]*).do $1.php [L]
5</IfModule>
(以上內容要儲存在.htaccess檔案中)

這樣當訪客輸入http://xxx.com/index.do時,
Apache會導向index.php。

這裡解釋一下第四行的內容,
該行內容是指:

當看到符合使用英文大小寫字母、數字和底線的.do時,即指定給該檔名的.php檔處理


這是最基本的狀況,
萬一某業主手賤替某個檔取了ad@google.php時又該怎麼辦?
你可以在這行([a-zA-Z0-9_]*)的粗體字後加上一個@,
如果有新狀況的話,就依此類推地給它加下去!
但是請注意,某些字碼如&、<、>等,
因為是需要進行HTML脫逸或是正規式的表示字元,
在使用上可能會有問題,使用前請務必小心,
當然啦,替檔案命名時絕對不要用這些字元會是最好的方法。

留言

這個網誌中的熱門文章

[野人獻曝] 串接 OpenAI 的 Assistant

你就直接把 Assistant 當成你在 ChatGPT 看到的那些 GPT 玩具吧(?), 只是你可以透過 Assistant API 透過程式化來建立你的 GPT 並與你的網站功能結合。 雖然前面說了「用 Assistant API 」,但實際上其實需要以下三個類型的 API 相互結合才能生出一個 Assistant: Assistants API :設定給助手(?)的指示內容、要使用的模型等資訊。在絕大部分場合下,你通常只需要呼叫一次 Assistant 的 Create 方法一次,此後就可以把回傳的 id 記錄下來後用在其他地方。 Threads API : 建立對話串,這個對話串會與前述的 Assistant 相互結合,讓 Assistant 知道要在這個 Thread 開始監聽訊息,並針對指示做出相應的回覆。 Messages API :將使用者輸入的訊息送到 Thread Runs API :使用者送出訊息後,就要呼叫 Create Run ,讓後端知道有工作要做了 以下是其流程: 先呼叫 Assistant API 的 Create ,記得要拿到回傳中最重要的 id ,這會在接下來的步驟中使用到。如果沒什麼特殊狀況的話你可以把這個 id 持久化保存,之後就不用再重做一次這個步驟。 接著 建立一個新的 Thread ,並取回其中回傳的 id。這個步驟你可能會因應不同的使用的而需要頻繁產生。 以上兩個步驟完成後,接著就可以: 建立一條新的 Message ,並將使用者輸入的內容發送至剛才建立的 Thread 中(透過之前建立 Thread 成功所得到的 id) 接著 呼叫 Run API 的 Create ,將建立 Assistant 與 Thread 成功時所取得的 id 帶入後,就會開始根據使用者輸入的內容開始做分析處理。若是忘記呼叫這個 API 你會發現怎麼內容輸入了但卻沒有任何回應。 然後就可以定期去 呼叫取得 Run 資訊的 API ,看看是不是已經處理完畢。只有在 status 是 completed 時,才代表執行完畢。 執行完畢後,就可以 透過 Message API 取得訊息 。 看吧,很簡單吧? ㄍㄋㄋ,官網沒寫詳細用法只有提供 endpoint 資訊。害我先按照自己的想法寫出一個雛形發覺怎麼跑不起來一邊確認一邊問 ChatGPT...

[野人獻曝] 架個 Stable Diffusion WebUI 來生個香香的老婆圖

A.I. 當道後, 什麼以文生文、以文生圖、以文生聲(?)等玩意陸續蹦出來。 別的先不說, 光是以文生圖就有像是 MidJourney 還是 Dall-E 等模型提供相關服務。 而後 NovelAI 自爆自己的以文生圖模型是透過 Danbooru 上收集的圖片所訓練, 外加相關程式碼也不小心外洩後, 你各位紳士們就開始在以文生圖這塊領域中尋找自己的婆了。 不過以上都不是重點, 本文只是想要記錄下 Stable Diffusion WebUI (以下簡稱 SDWebUI)的架設步驟而已。 其實安裝步驟出乎意料的簡單(當然是指在 Google CoLab 上), 只要以下幾個步驟,基本上就能把 SDWebUI 跑起來並且開始生圖: * 確保機器上有 Python 3 以上環境 * 下載 SDWebUI 原始碼,可以直接在 Github 上 clone 下來。 * 下載所需的模型:在產生 ACG 相關圖片的話,目前推薦使用 Anything 或是 Hentai Diffusion 等模型。不過要注意一點:模型檔案越大的話,硬體要求會更高(主要是顯卡的 GPU 和記憶體等級)。如果沒滿足需求的話可能會跑不起來 * 切換到 SDWebUI 目錄,執行以下指令開始跑 SDWebUI 的設定,會在這個步驟安裝其相依的 Python 套件並處理相關設定: COMMANDLINE_ARGS="--exit" REQS_FILE="requirements.txt" python launch.py *  把前面步驟所下載的模型檔案,搬移到 SDWebUI檔案目錄/models,例如 clone 到 /home/user/stable-diffusion-webui 的話,就把模型檔複製到 /home/user/stable-diffusion-webui/models 下。 * 執行以下指令,等待跑完以後,畫面應該會顯示一組 xxx.gradio.xxx 的網址,可以讓自己或朋友連進來玩(網址 72 小時內有效)。如果只是自用的話,也可以用 localhost 的網址開啟服務: COMMANDLINE_ARGS="--share --gradio-debug" REQS_FILE="requirements....

[野人獻曝] Google App Engine ...... 的踩雷

最近因為要把用 Go 寫的一些 API 搬到專用平台跑又不想花錢, 想到 App Engine 有免費方案, 所以看了一下就先搬一兩隻進去跑了一個禮拜後, 昨天好奇瞄了一下帳單後大吃一斤, 發現才跑一個星期就有 16 鎂的帳單! 再仔細翻一下文件發現這其中的奧秘...... App Engine 分成兩種運作環境, 一為標準,另一個則為彈性。 前者有提供免費方案,依照選擇的類型不同,可能會有一天 28 或 9 個的免費時數可用; 後者完全沒有免費方案,一開下去就立刻算錢。 而我用的正是彈性,所以一開下去就馬上燒錢 Orz 話說回來了,到底標準和彈性環境有什麼差別? 標準環境的特色: 使用的程式語言版本基本按照 App Engine 要求。以 Go 為例,他該死的就只支援到 1.16 ,想用 1.17 以上的版本,你只能使用彈性環境。 有免費方案(不是重點 運作系統規格只有籠統的 F1 / B1 這種讓你選,就算想要記憶體多一點你也只能選更高的等級。 AutoScaling 只能設定標準由 App Engine 自行控制 想在運作環境裝一些額外的東西嘛......應該是不行。 彈性環境的特色: 可以自己寫 Dockerfile ,所以要什麼東西用什麼語言環境,你自己決定 沒有免費方案(依然不是重點 運作所需的 CPU 核心和記憶體數量可以自訂,只要符合基本要求即可 AutoScaling 機制可以手動也可以自動控制 可以 SSH 登入,想查什麼東西還蠻方便的說 所以你知道為什麼彈性環境沒有免費方案了吧(眼神死 ====================== 不過根據使用和昨天翻文件下來, 我覺得 App Engine 彈性環境遠比 AWS 的 ECS Fargate 更懶人包。 前者只需要專注在程式撰寫和設定所需運作的環境,基本上沒什麼事要做了; 但後者除了上述的東西外, 還需要自己設定從 VPC / Security Group / Load Balancer 等一狗票東西, 老實說還挺麻煩的。 ====================== 不過地雷還是有, 在寫 App Engine 的 app.yaml (運作環境設定檔)時, 關於 auto_scaling 的相關設定必須要特別注意, 如果沒特別宣告的話, 會讓你的服務可能一開始就開出兩個 instance 運作...