跳到主要內容

發表文章

目前顯示的是有「Apache」標籤的文章

[野人獻曝] 如何實作一個簡單的短網址服務站(前言)

善意提醒: 本系列文隨時有腰斬的可能,若您需要根據本系列文進行實作的話, 請先作好可能會無法繼續下去的心理準備。 ==正文開始== 事前準備項目 一台可以跑 Apache 、 MySQL 、 PHP 的主機 一個看起來還蠻酷的網址 一個不會讓你想砸了它的文字編輯器 一個夠清晰的腦袋 關於第一個和第二個項目, 可以考慮去租一般的虛擬主機, 通常可以一次解決! 第三個項目的話,我個人推薦 Notepad++ 啦, 當然你若有更好的選擇,也可以直接使用! 至於第四個項目,就請施主自求多福了! 第一步 當然先從創造資料庫開始囉(不然你怎麼放那些原始網址資料?), 請打開你的 phpmyadmin , 然後將 這段指令 交給phpmyadmin執行。 注意:如果你是用虛擬主機的話,請不要直接執行那段指令,否則會有出錯的問題。 請先在你的網站控制臺直接創造一個資料庫,再把上述SQL指令中的 CREATE...... 複製下來交給phpmyadmin執行。 如果順利執行這段SQL指令的話,那麼就請你打開你常用的文字編輯器,輸入以下內容: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ redirect.php?q=$1 [L,QSA] ( 原始內容 ) (......本文待續......)

[野人獻曝]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脫逸或是正規式的表示字元, 在使用上可能會有問題,使用前請務必小心, 當然啦,替檔案命名時絕對不要用這些字元會是最好的方法。

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

Rewrite 最近不小心沉迷在研究Apache的mod_rewrite, 剛好也有點心得, 所以寫篇簡單心得放在這裡吧。 其實一切都是因為我從 Cakephp 裡的.htaccess得到一些靈感開始的, 所以我就以Cakephp的rewrite方法來作點說明吧! 首先看到Cakephp根目錄下的.htaccess檔吧: &lt;IfModule mod_rewrite.c&gt; RewriteEngine on RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] &lt;/IfModule&gt; 第一行和最後一行基本上算是必備, 所以不用問太多加下去就對了XD 第二行開始,代表著你要啟用RewriteEngine的功能, 這一行必加,因為不加的話,你也不會知道為啥你的rewrite無效~ 第三、四行則代表要把所有的Request導向給app/webroot, 換言之,Cakephp根目錄下的index.php基本上是擺好玩的! 既然前面提到已經被導向至app/webroot了, 那麼就繼續看app/webroot/.htaccess的內容吧: &lt;IfModule mod_rewrite.c&gt; RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] &lt;/IfModule&gt; 第一行、第二行和最後一行內容跟前段相同,所以就不多說了, 比較有意思的是第三、四、五行。 其意義如下: RewriteCond %{REQUEST_FILENAME} !-d 意義: 任何附掛的字串都不會被視為一個目錄 比如你輸入http://localhost/cakephp/a/s/d,(cakephp是你放cakephp檔案的目錄) 那麼rewrite將會把a/s/d當成一般字串,而不會繼續去尋找cakephp下是不是有目錄a、目錄s。 Rewr...