正常化目錄
正常化目錄即為URL後面添加斜杠/
如輸入http://www.cnblogs.com/jaywoo 自動添加/轉換成 http://www.cnblogs.com/jaywoo/
之前用ISAPI_Rewrite在IIS中偽靜態 不正常化目錄也不會出現連結錯誤(為了SEO一般是範化目錄的 規則為:RewriteRule ^/([^.]+[^/]$) /$1/ [L,R] ),
但在Apache中卻是串連錯誤的,所以需要解決的。解決思路有兩種
1.寫兩個重寫規則 一個加/的 一個不加/ 這種方法不可取的 因為需要為多個目錄編寫
2.自動添加/ 正常化目錄
Apache正常化目錄網上說在Windows中會自動正常化的 但我發現卻不是自動正常化的 可能是我配置有問題吧。
度娘說正常化目錄是:RewriteRule ^(.+[^/])$ $1/ [R] 但我發現沒有用 於是就自己寫一條規則:RewriteRule ^(\w+)$ $1/ [R]
靜態版塊目錄化和貼子目錄化
現在網站一般都採用扁平的樹型網狀結構 即目錄式導航
如:http://www.cnblogs.com/daimage/archive/2012/02/25/2367534.html
如何在Discuz中使用目錄式導航呢?
一、 修改source\function下的function_core.php
找到
if($type == 'forum_forumdisplay') {
list(,,, $fid, $page, $extra) = func_get_args();
$r = array(
'{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
'{page}' => $page ? $page : 1,
);
} elseif($type == 'forum_viewthread') {
list(,,, $tid, $page, $prevpage, $extra) = func_get_args();
$r = array(
'{tid}' => $tid,
'{page}' => $page ? $page : 1,
'{prevpage}' => $prevpage && !IS_ROBOT ? $prevpage : 1,
);
改為
if($type == 'forum_forumdisplay') {
list(,,, $fid, $page, $extra) = func_get_args();
$r = array(
'{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
'{page}' => $page ,
);
} elseif($type == 'forum_viewthread') {
list(,,, $tid, $page, $prevpage, $extra) = func_get_args();
$fid = DB::result_first("SELECT fid FROM ".DB::table('forum_thread')." WHERE tid = '$tid'");
$r = array(
'{fid}' => empty($_G['setting']['forumkeys'][$fid]) ? $fid : $_G['setting']['forumkeys'][$fid],
'{tid}' => $tid,
'{page}' => $page ,
'{prevpage}' => $prevpage && !IS_ROBOT ? $prevpage : 1,
);
二、 在後台管理中->全域->Seo設定->靜態化URL (記得需要在修改function_core.php中代碼後再設定,否則可能會出現載入CSS,JS錯誤)
若設定成以下格式
在"論壇主題列表頁"的格式中填寫:{fid}/{page}/
在"論壇主題內容頁"的格式中填寫:{fid}/d{tid}/{page}
則偽出來的URL則形式如下:
論壇主題列表如:http://www.cnblogs.com/jaywoo 論壇文章頁則如:http://www.cnblogs.com/jaywoo/d123456
.htaccess檔案配置為:
文章對應為:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule d([0-9]+)(/([0-9]+))?(/)?$ forum.php?mod=viewthread&tid=$1&extra=page\%3D$5&page=$3&%1 [L,NC]
主題對應為:
若設定成以下格式:
在"論壇主題列表頁"的格式中填寫:{fid}/{page}/
在"論壇主題內容頁"的格式中填寫:{fid}/{tid}{page}.html
則偽出來的URL則形式如下:
論壇主題列表如:http://www.cnblogs.com/jaywoo 論壇文章頁則如:http://www.cnblogs.com/daimage/archive/2012/02/25/2367534.html
主題對應為:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(\w+)/$ forum.php?mod=forumdisplay&fid=$1&page={page}&%1 [L,NC]
文章對應為:
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^archiver/(fid|tid)-([0-9]+)\.html$ archiver/index.php?action=$1&value=$2&%1 [L,NC]
作者:代碼哥
出處:http://daimage.cnblogs.com/
說明:本博原創文章著作權歸部落格園和本人共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出作者名稱和原文串連,否則保留追究法律責任的權利。