av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHPBB MOD for Google 完全解決方案

瀏覽:10日期:2024-02-05 09:34:29

作者:Trotter 郵箱:trotter@kekerde.net 出處:www.gbunix.com

轉(zhuǎn)載請(qǐng)保持文檔完整,注明出處。

前言

隨著互聯(lián)網(wǎng)上的內(nèi)容以驚人速度的增長(zhǎng)也越來(lái)越突出了搜索引擎的重要性,如果網(wǎng)站想更好地被搜索引擎收錄,網(wǎng)站設(shè)計(jì)除了面向用戶友好(User Friendly)外,搜索引擎友好(Search Engine Friendly)的設(shè)計(jì)也是非常重要的。進(jìn)入搜索引擎的頁(yè)面內(nèi)容越多,則被用戶用不同的關(guān)鍵詞找到的幾率越大。不得不承認(rèn),將動(dòng)態(tài)網(wǎng)頁(yè)鏈接rewriting成靜態(tài)鏈接是最保險(xiǎn)和穩(wěn)定的面向搜索引擎優(yōu)化方式。該方案就是針對(duì)phpBB論壇系統(tǒng)的URL重定向提出的。

解決方案

URL重定向從技術(shù)上將,目前可以通過(guò)兩種方式實(shí)現(xiàn),一種是基于URL rewrite,另一種是基于PATH_INFO。例如http://www.gbunix.com/bbs/ftopic102.html就是基于rewrite實(shí)現(xiàn)的,而http://www.gbunix.com/article/article.php/515是基于PATH_INFO實(shí)現(xiàn)的。

針對(duì)PHPBB論壇的改造,我們分別就這兩種技術(shù)分別介紹。

一.使用rewrite技術(shù)實(shí)現(xiàn):

修改phpBB代碼:

打開(kāi)/includes/page_header.php文件,

搜索代碼:

// // Generate logged in/logged out status //

之前加:

ob_start(); function replace_for_mod_rewrite(&$s) { $urlin = array( ''(?<!/)viewforum.php?f=([0-9]*)&amp;topicdays=([0-9]*)&amp;start=([0-9]*)'', ''(?<!/)viewforum.php?f=([0-9]*)&amp;mark=topics'', ''(?<!/)viewforum.php?f=([0-9]*)'', ''(?<!/)viewtopic.php?t=([0-9]*)&amp;view=previous'', ''(?<!/)viewtopic.php?t=([0-9]*)&amp;view=next'', ''(?<!/)viewtopic.php?t=([0-9]*)&amp;postdays=([0-9]*)&amp;postorder=([a-zA-Z]*)&amp;start=([0-9]*)'', ''(?<!/)viewtopic.php?t=([0-9]*)&amp;start=([0-9]*)&amp;postdays=([0-9]*)&amp;postorder=([a-zA-Z]*)&amp;highlight=([a-zA-Z0-9]*)'', ''(?<!/)viewtopic.php?t=([0-9]*)start=([0-9]*)'', ''(?<!/)viewtopic.php?t=([0-9]*)'', ''(?<!/)viewtopic.php&amp;p=([0-9]*)'', ''(?<!/)viewtopic.php?p=([0-9]*)'', ); $urlout = array( 'viewforum1-2-3.html', 'forum1.html', 'forum1.html', 'ptopic1.html', 'ntopic1.html', 'ftopic1-2-3-4.html', 'ftopic1.html', 'ftopic1-2.html', 'ftopic1.html', 'sutra1.html', 'sutra1.html', ); $s = preg_replace($urlin, $urlout, $s); return $s; }

打開(kāi)/includes/page_tail.php文件,

搜索代碼:

$db->sql_close();

之后加:

$contents = ob_get_contents(); ob_end_clean(); echo replace_for_mod_rewrite($contents); global $dbg_starttime;

如果你的phpBB是2.06版本,打開(kāi)includes/functions.php文件,

搜索代碼:

if (!empty($db)) { $db->sql_close(); }

之后加:

if (stristr($url, 'http://')) { header('Location: ' . $url); exit; }

最后在bbs目錄下建立.htaccess 文件,文件內(nèi)容為:

RewriteEngine On RewriteRule ^forums.* index.php RewriteRule ^forum([0-9]*).* viewforum.php?f=$1&mark=topic RewriteRule ^viewforum([0-9]*)-([0-9]*)-([0-9]*).* viewforum.php?f=$1&topicdays=$2&start=$3 RewriteRule ^forum([0-9]*).* viewforum.php?f=$1 RewriteRule ^ptopic([0-9]*).* viewtopic.php?t=$1&view=previous RewriteRule ^ntopic([0-9]*).* viewtopic.php?t=$1&view=next RewriteRule ^ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4 RewriteRule ^ftopic([0-9]*)-([0-9]*).* viewtopic.php?t=$1&start=$2 RewriteRule ^ftopic([0-9]*).* viewtopic.php?t=$1 RewriteRule ^ftopic([0-9]*).html viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5 RewriteRule ^sutra([0-9]*).* viewtopic.php?p=$1

如果你的服務(wù)器不支持.htaccess,請(qǐng)打開(kāi)httpd.conf文件,編輯你的虛擬主機(jī)部分,如下:

<VirtualHost 1.2.3.4> ServerAdmin webmaster@domain.com DocumentRoot /home1/ftp/trotter/www ServerName www.gbunix.com RewriteEngine On RewriteRule ^/bbs/forums.* /bbs/index.php RewriteRule ^/bbs/forum([0-9]*).* /bbs/viewforum.php?f=$1&mark=topic RewriteRule ^/bbs/viewforum([0-9]*)-([0-9]*)-([0-9]*).* /bbs/viewforum.php?f=$1&topicdays=$2&start=$3 RewriteRule ^/bbs/forum([0-9]*).* /bbs/viewforum.php?f=$1 RewriteRule ^/bbs/ptopic([0-9]*).* /bbs/viewtopic.php?t=$1&view=previous RewriteRule ^/bbs/ntopic([0-9]*).* /bbs/viewtopic.php?t=$1&view=next RewriteRule ^/bbs/ftopic([0-9]*)-([0-9]*)-([a-zA-Z]*)-([0-9]*).* /bbs/viewtopic.php?t=$1&postdays=$2&postorder=$3&start=$4 RewriteRule ^/bbs/ftopic([0-9]*)-([0-9]*).* /bbs/viewtopic.php?t=$1&start=$2 RewriteRule ^/bbs/ftopic([0-9]*).* /bbs/viewtopic.php?t=$1 RewriteRule ^/bbs/ftopic([0-9]*).html /bbs/viewtopic.php?t=$1&start=$2&postdays=$3&postorder=$4&highlight=$5 RewriteRule ^/bbs/sutra([0-9]*).* /bbs/viewtopic.php?p=$1 ErrorLog logs/gbunix.com-error_log CustomLog logs/gbunix.com-access_log combined </VirtualHost>

如果你用的不是虛擬主機(jī),將RewriteRule部分代碼放到httpd.conf文件最后就可以。

注意:非常重要的一點(diǎn),為了系統(tǒng)的安全,請(qǐng)?jiān)赽bs發(fā)布目錄下建立robots.txt文件,文件內(nèi)容如下:

Disallow: /your-forum-folder/sutra*.html$ Disallow: /your-forum-folder/ptopic*.html$ Disallow: /your-forum-folder/ntopic*.html$ Disallow: /your-forum-folder/ftopic*asc*.html$

給apache安裝mod_rewrite模塊

如果你的服務(wù)器apache還沒(méi)有安裝,那很簡(jiǎn)單,在編譯apache時(shí)將mod_rewrite模塊編譯進(jìn)去就可以,相關(guān)文檔可以在www.gbunix.com中找到。如果你的apache已經(jīng)安裝好了,現(xiàn)在只想編譯出mod_rewrite.so模塊,在apache中進(jìn)行加載,下面我們就介紹這個(gè)方法。

以Solaris操作系統(tǒng)進(jìn)行舉例:

# PATH=/usr/local/bin:/usr/sfw/bin:/usr/ccs/bin:$PATH # export PATH # which gcc # which make

# find ./ -name mod_rewrite.c //在apache的安裝目錄中尋找mod_rewrite.c文件 # cd PATH/to/mod_rewrite.c //進(jìn)入包含mod_rewrite.c文件的目錄 # apxs -c mod_foo.c //apxs請(qǐng)指定絕對(duì)路徑,在你當(dāng)前正在使用apache的bin目錄里 # apxs -i -a -n mod_rewrite mod_rewrite.la

如果沒(méi)有什么錯(cuò)誤的話,應(yīng)該在你的apache的modules目錄中編譯出一個(gè)mod_rewrite.so文件。

編輯httpd.conf文件,確認(rèn)httpd.conf中已經(jīng)包含mod_rewrite.so的加載語(yǔ)句,如下:

LoadModule rewrite_module modules/mod_rewrite.so

這時(shí),你的apache應(yīng)該已經(jīng)支持rewrite了。

二.基于PATH_INFO技術(shù)實(shí)現(xiàn):

修改phpBB代碼:

打開(kāi)overall_header.tpl文件,在首行加如下代碼:

<base >

打開(kāi)config.php文件,在?>前加入如下代碼:

if ($REQUEST_METHOD == 'GET') { if (strlen(getenv('PATH_INFO')) > 1) { $GET_array = array(); $PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF); $vars = explode('/', substr(getenv('PATH_INFO'), 1)); for ($i=0, $n=sizeof($vars); $i<$n; $i++) { if (strpos($vars[$i], '[]')) { $GET_array[substr($vars[$i], 0, -2)][] = $vars[$i+1]; } else { $HTTP_GET_VARS[$vars[$i]] = $vars[$i+1]; } $i++; } if (sizeof($GET_array) > 0) { while (list($key, $value) = each($GET_array)) { $HTTP_GET_VARS[$key] = $value; } } }

}

if ($REQUEST_METHOD == 'POST') { if (strlen(getenv('PATH_INFO')) > 1) { $POST_array = array(); $PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF); $vars = explode('/', substr(getenv('PATH_INFO'), 1)); for ($i=0, $n=sizeof($vars); $i<$n; $i++) { if (strpos($vars[$i], '[]')) { $POST_array[substr($vars[$i], 0, -2)][] = $vars[$i+1]; } else { $HTTP_POST_VARS[$vars[$i]] = $vars[$i+1]; } $i++; } if (sizeof($GET_array) > 0) { while (list($key, $value) = each($POST_array)) { $HTTP_POST_VARS[$key] = $value; } } }

}

打開(kāi)functions.php文件,在?>前加入如下代碼:

function replace_for_mod_rewrite($s) {

$s = str_replace('?', '/', $s); $s = str_replace('&amp;', '/', $s); $s = str_replace('&', '/', $s); $s = str_replace('=', '/', $s); return $s;

}

打開(kāi)sessions.php文件,用下面代碼替換原來(lái)定義的append_sid()函數(shù):

function append_sid($url, $non_html_amp = false) { global $SID;

if ( !empty($SID) && !preg_match('#sid=#', $url) && !preg_match('#sid/#', $url) && !stristr( $_SERVER['HTTP_USER_AGENT'] ,'bot') && !stristr($_SERVER['HTTP_USER_AGENT'] ,'inktomi')) { $url .= ( ( strpos($url, '?') != false ) ? ( ( $non_html_amp ) ? '&' : '&amp;' ) : '?' ) . $SID ; } $url=replace_for_mod_rewrite($url); return $url; }

這時(shí),你的論壇URL將會(huì)映射成(http://www.domain/bbs/viewtopic.php/t/4)這種方式。

參考文獻(xiàn):

http://www.phpbb.com/phpBB/viewtopic.php?t=199008

http://www.phpbb.com/phpBB/viewtopic.php?t=137334

標(biāo)簽: PHP
主站蜘蛛池模板: 2019精品手机国产品在线 | 欧美成人专区 | 日本在线免费视频 | www国产成人免费观看视频,深夜成人网 | 在线视频 欧美日韩 | 成人a在线观看 | 欧美日韩在线视频观看 | 亚洲xxxxx| 精品一区二区在线观看 | 国产精品一区久久久久 | 中文一区二区 | 欧美乱码精品一区二区三区 | 国产精品色婷婷久久58 | 麻豆av在线免费观看 | 欧美一区二区三区的 | 国产性网| 亚洲视频一区在线观看 | 玖玖国产 | 在线只有精品 | 精品视频一区二区在线观看 | 天天综合网天天综合 | 91视频播放 | 久久久91精品国产一区二区精品 | 二区在线视频 | 亚洲一区二区三区免费视频 | 99精品一区二区三区 | 激情欧美日韩一区二区 | 国产精品久久视频 | 视频一区 国产精品 | 国产精品免费av | 中文字幕电影在线观看 | 亚洲精品一区二区网址 | 欧美成年人网站 | 日韩中文av在线 | 二区视频| 欧美日韩亚洲一区二区 | 日韩黄色免费 | 久久久91精品国产一区二区三区 | 国产高清一区二区 | 国产一区二区精品在线 | 欧美不卡网站 |