首頁 發表 :: 美術繪圖 | 美術設計 | 攝影 | 熱門標籤 美術討論 :: 美術工作 | 美術比賽 | 美術相關 | 一般討論 | 美術同好 CG 討論 :: Photoshop | Painter | 3D 圖聊 | 行動

【 立即註冊 】 : 更改個人資料 : : 登入
會員名稱: 登入密碼: 保持登入

Apache Rewritel:phpbb rewrite 與 Apache Rewrite 技術

發表新主題 回覆主題 美術論壇:美術討論區 -> 資訊技術、管理與應用

| 1頁, 共1
發表人 人氣點閱:19688
Type



繪圖畫廊設計藝廊
攝影相簿留言板
最愛收藏分類標籤
暱稱: Type
註冊: 2002-11-30
文章: 6140
來自: vovo2000.com
V幣: 785389
Apache Rewritel:phpbb rewrite 與 Apache Rewrite 技術 2003-11-22 23:01
分類: rewrite apache phpbb rewrite
個人: rewrite apache phpbb rewrite

Apache 特有的 rewrite 技術很好用,Vovo2000.Com 的
/gallery/
/vovo-gallery/
/phpbb2/
/linka/
/paintbbs/ paintbbs-archive
...
都已經徹底嵌入 rewrite。

Rewrite 很簡單的說,就是把類似
==> /phpbb2/viewtopic.php?t=1388&start=0&sort=0
動態網頁,讓他給 user 的感覺是
==> /phpbb2/viewtopic-1388.html
而,實際上還是執行 viewtopic-1388.html&start=0&sort=0

再舉一個例子:
使用者看到 => /paintbbs/pch-viewer-1234.html
實際上執行 => /paintbbs/pch-viewer.cgi?pic=1234.png&pch=1234.pch

對 User 來說他只需要記得
Viewtopic-1388.html 或 pch-viewer-1234.html 即可


好處有:
1. URL 短一點,對使用者而言,靜態網址的接受度較高。
2. Search Engine Robots/Spiders/Crawlers 比較吃的下去
3. (未經證實)靜態網址的 SEO/SERP 效果好
4. 減少您 Log File / header流量的負擔,積少成多

要注意:
1. 要注意 Session ID 的控制或 Cache-Control 等議題
2. 一些使用者專屬個人資料的頁面,rewrite 時要注意。
3. .htaccess 的設定

===========================================
===========================================
在這裡舉 PHPBB2 2.0.3 的例子來說,一步一步來:

1. 把 Apache 的 Rewrite 打開(mod_rewrite)

2. 在 phpbb/include/page_header.php
的 // Generate logged in/logged out status 之前加入
代碼:

ob_start();
function replace_for_mod_rewrite(&$s)
{
$urlin = array(
"'(?<!/)viewforum.php\?f=([a-zA-Z0-9]+)&topicdays=([0-9]*)&start=([0-9]*)'",
"'(?<!/)viewforum.php\?f=([a-zA-Z0-9]+)&mark=topics'",
"'(?<!/)viewforum.php\?f=([a-zA-Z0-9]+)'",
"'(?<!/)viewtopic.php\?t=([0-9]+)&view=previous'",
"'(?<!/)viewtopic.php\?t=([0-9]+)&view=next'",
"'(?<!/)viewtopic.php\?t=([0-9]+)&postdays=([0-9]*)&postorder=([a-zA-Z]*)&start=([0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]+)&start=([0-9]*)'",
"'(?<!/)viewtopic.php\?t=([0-9]+)'",
"'(?<!/)viewtopic.php\?p=([0-9]+)'",
"'(?<!/)profile.php\?mode=viewprofile&u=([0-9]+)'"
);
$urlout = array(
"viewforum-$1-$2-$3.html",
"forum-$1.html",
"forum-$1.html",
"prev-topic-$1.html",
"next-topic-$1.html",
"viewtopic-$1-$2-$3-$4.html",
"viewtopic-$1-$2.html",
"viewtopic-$1.html",
"viewpost-$1.html",
"profile-$1.html"
);
$s = preg_replace($urlin, $urlout, $s);
$s = mb_ereg_replace( "viewtopic-([0-9]+).html&(.*)$", "viewtopic.php?t=\\1&\\2", $s);
return $s;
}


3. 在 phpbb/include/page_tail.php

代碼:
在下列?#123;式之後:
$db->sql_close();

?#91;入:
$contents = ob_get_contents();
ob_end_clean();
echo replace_for_mod_rewrite($contents);
global $dbg_starttime;
 

在下列?#123;式之後:
ob_end_clean();

?#91;入:
echo replace_for_mod_rewrite($contents);
global $dbg_starttime;



4. 接下來當然要建立 .htaccess 的 rewrite rule

代碼:
RewriteEngine On
RewriteRule ^viewforum-([0-9a-zA-Z]+)-([0-9]+)-([0-9]+)\.html$   viewforum.php?f=$1&topicdays=$2&start=$3
RewriteRule ^forum-([0-9a-zA-Z]+)\.html$   viewforum.php?f=$1&mark=topic
RewriteRule ^forum-([0-9a-zA-Z]+)\.html$   viewforum.php?f=$1
RewriteRule ^prev-topic-([0-9]+)\.html$   viewtopic.php?t=$1&view=previous
RewriteRule ^next-topic-([0-9]+)\.html$   viewtopic.php?t=$1&view=next
RewriteRule ^viewtopic-([0-9]+)-([0-9]+)\.html$   viewtopic.php?t=$1&start=$2
RewriteRule ^viewtopic-([0-9]+)-([0-9]+)-([a-zA-Z]*)-([0-9]+)\.html$      viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4
RewriteRule ^viewtopic-([0-9]+)\.html$   viewtopic.php?t=$1
RewriteRule ^viewpost-([0-9]+)\.html$   viewtopic.php?p=$1
RewriteRule ^viewtopic-([0-9]+)\.html&highlight=(.*)$      viewtopic.php?t=$1&highlight=$2
RewriteRule ^profile-([0-9]+)\.html$   profile.php?mode=viewprofile&u=$1


5. 測試∼ 當然 OK;

再分享一下 Linka 的 rewrite .htaccess

代碼:
<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /linka/
   RewriteRule   ^category/([0-9]+)\.html$   http://vovo2000.com/linka/links.php?cat=$1      [QSA]
   RewriteRule   ^action/([a-z0-9]+)\.html$   http://vovo2000.com/linka/links.php?action=$1   [QSA]
   RewriteRule   ^view/([a-z0-9]+)/([0-9]+)\.html$   http://vovo2000.com/linka/links.php?action=$1&link_id=$2   [QSA]
   RewriteRule ^adminvlink/$            http://vovo2000.com/linka/                  [R]
</IfModule>



供各位參考,善用 Rewrite 讓您的動態網站更美觀、更一致、更方便被「吃」 。

女神卡卡超人氣鋼琴譜

不小心就學會Illustrator




資訊之理論、應用、硬體、軟體討論 (繪圖軟體討論請至美術討論區)
發表新主題 回覆主題
一般討論
發表:美術繪圖、插畫設計
新聞、活動、評論、公告
最近 10 則討論
2012 中元節日期/2012 中元普渡幾月幾號
By Type R:0 V:16 05/24
2012 七夕情人節日期/2012 七夕幾月幾號
By Type R:0 V:16 05/24
請問各位前輩們這個效果是怎樣繪製出來的
By TAKO R:4 V:878 05/24
[2012]新一代設計展照片
By TAKO R:0 V:99 05/22
(旅行精選)這是否成了不堪回首的過往?
By yeasonth R:0 V:58 05/21
[手機遊戲美術設計] 台中伊洛帕科技公司 徵 手機遊戲美術設計 共一名
By erawppa R:0 V:248 05/18
Painter新手起步疑問
By LeoHuk R:0 V:210 05/17
百度盜改圖者 Kb_Takuy​​a 正一非洲和尚
By 影宿 R:0 V:348 05/16
請問painter12怎麼調中文??? ( 未解決:(( )
By TZE R:2 V:477 05/16
Corel 達人必修設計課程
By ScottAlessi R:0 V:312 05/16
最近 10 則討論
臘腸~同事的寶貝女兒
By 鄭翠鈴 R:0 V:8 05/24
海賊王第一彈:喬巴
By 波波 R:0 V:8 05/24
仙界傳2_門派導師
By fmo6 R:1 V:82 05/24
隱藏版人物設計
By Wu R:4 V:436 05/24
貓貓貓貓
By Bring R:0 V:35 05/24
ALIEN WAR 異戰 專題遊戲海報
By fmo6 R:1 V:274 05/24
黑暗之心-偽善的笑臉
By 勿語 R:0 V:48 05/24
呂布貂蟬
By edward R:1 V:107 05/24
HOELEX【漫畫速寫】林書豪卡通化人物
By 秩維 R:1 V:153 05/24
我的毛毛球
By 燦燦 R:0 V:129 05/24
最近 10 則討論
"Mask" Illusation/Fine Art - 「面具」插畫繪圖與美術創作
By Type R:0 H:83 05/24
美術新聞/美術繪畫新聞/美術設計新聞2012/05/17~2012/05/23
By 滄瀳飄零 R:31 H:78 05/23
SJAM世界藝術館 開幕賀禮
By vista R:0 H:37 05/23
好感動。相簿 分享卡 創作徵選
By 吳貝蒂 R:0 H:105 05/22
第十屆台新藝術獎入圍特展 10th Taishin Art @當代藝術館,2012/04/28-06/17
By 滄瀳飄零 R:3 H:93 05/20
瘋狂達利•超現實主義大師特展@中正紀念堂,2012/6/16∼2012/9/30
By 滄瀳飄零 R:6 H:393 05/20
2012「光寶創新獎」,總獎金過200萬,2012/06/15,總獎2百萬
By 滄瀳飄零 R:0 H:178 05/20
亞洲大學2012 U19全國創意發明競賽,2012/07/31,總獎68萬
By 滄瀳飄零 R:0 H:98 05/20
內政部國民年金「公仔創意設計」比賽(活動廣告),2012/085/15,總獎14萬
By 滄瀳飄零 R:0 H:195 05/20
2012第六屆臺灣OTOP設計大賞,2012/06/30
By 滄瀳飄零 R:0 H:154 05/20