找回密码
 立即注册
查看: 7192|回复: 0

织梦内容管理系统伪静态设置

[复制链接]
发表于 2013-7-24 20:11:08 | 显示全部楼层 |阅读模式
我们都知道搜索引擎对静态的地址十分友好,几乎所有的建站程序拿来之后,都要考虑实现伪静态,虽说随着搜索引擎的算法不断调整,渐渐的对动态地址也开始友好,不过,个人觉得如果有条件的话,还是实现伪静态好点。不过要想实现伪静态,还跟你的所用的空间相关,因此购买空间的时候一定要先咨询一下客服人员,空间是否支持伪静态。其中Apache服务器(也就是linux主机)伪静态相对简单,直接在.htaccess文件中加入相应伪静态规则即可;而IIS服务器(Windows主机)伪静态的实现,则需要加载Rewrite组件,(打开虚拟主机控制面板,点开“ISAPI筛选器设置”,选择开启自定义的URL静态化支持;)然后配置httpd.conf文件。
! r5 t; f- H% M 具体实现方法:
8 c* n) b5 w: v+ d 方法一:在后台配置开启DedeCms伪静态
6 O( t3 c  c* {" G1.后台-系统参数-核心设置-是否使用伪静态:选择“是”;
8 M6 I6 |7 C9 F  n1 z7 J4 [- `( x% }2.如果你启用了问答模块,则后台-系统参数-模块设置-是否使用伪静态:选择“是”;/ K2 `6 W/ h+ Q3 d/ f& E+ d
3.创建栏目或批量增加栏目时,栏目列表选项:选择“使用动态页”;添加新文章时,发布选项:选择“仅动态浏览 ”。当然,你也可以更改它们的模板,让它们默认就是这两个值即可。
# J( l; Q5 @# J" g: o' n3 ] 注:如果你的网站已经存在生成的静态栏目或文章HTML,那么只需在后台-系统-SQL命令行工具中执行如下语句即可:1 E4 G/ F9 Q. @
0 p2 j5 |1 o& _4 k- x* N4 P
[mw_shl_code=applescript,true]update dede_arctype set isdefault=-1;   
. ?0 \& {" D% j7 b' [8 @; y( {update dede_archives set ismake=-1;  [/mw_shl_code]' T8 W- H) B  a; N; }" k
- {; |6 J7 u/ q2 k. u# z
其中,dede是你安装时的数据表前缀,根据实际情况替换。/ \1 o0 Q/ B: v
方法二:通过PHP源码的修改实现伪静态3 c  W: n3 T# s. _) X+ d* f
1.织梦首页伪静态
; T* k1 ]6 B1 `8 _- T 把站点根目录下index.html删除,以后不更新主页HTML即可,当然你也可以选择不使用动态首页。: Q3 r, z3 Q7 M8 \% i  s
2.织梦频道|列表页|文章页伪静态
) ?6 t( b7 o& v1 H2 l* q- M 主要通过修改GetFileName()、GetTypeUrl()这两个函数实现。DedeCms V5.3、DedeCms V5.5和DedeCms V5.6版本,打开/include/channelunit.func.php进行修改。注意:DedeCms V5.7,此文件路径更改了,你打开/include/helpers/channelunit.helper.php即可。
1 E+ B+ h, {8 T0 [: M  x# W" Ra.将GetFileName()中的如下代码:
, G7 h3 Q* Q& }; W2 \& }5 s! g" _, t
[mw_shl_code=php,true]//动态文章   5 V, F- S& g) P0 }! T1 p# j  O
if($cfg_rewrite == 'Y')   
$ U" Y. w6 K0 k* l: a: z5 ]+ O{   
: v0 m1 M1 a7 d5 ~8 C2 R/ Wreturn $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html';   
, u; e2 p$ e$ ?, g! ~5 Y}  [/mw_shl_code]
) ]' ^) y) o0 O2 V6 o3 `- R2 _! Y" W/ n$ {1 e
替换为如下代码:
) z2 W2 Q5 X+ y# ]& G$ h6 c* L. O! F& E/ A" @
[mw_shl_code=php,true]//动态文章   
; C" n+ O# y* ]0 Pif($cfg_rewrite == 'Y')   3 Z( J9 }$ a5 }4 O
{   " ], K0 ~4 `  H+ @% X$ F
return "/archives/view-".$aid.'-1.html';   
+ E9 E5 v5 s2 j8 E}  [/mw_shl_code]
& _3 j' y4 ?. s- u$ a4 q8 n. o, k) o( Y4 P; J! G! B
此外可以将文章页默认的/plus/view-1-1.html链接格式改为/archives/view-1-1.html,这点随个人喜好,不作更改也可。
" [3 l$ M+ S0 `  k) M% v6 P+ j  Ib.将GetTypeUrl()中的如下代码:
8 n8 i% {! H" L# ]7 D$ O8 g& R- e0 g, D" P+ p3 s3 }
//动态   
. S4 K5 T0 |1 D: f, ^$reurl = $GLOBALS['cfg_phpurl']."/list.php?tid=".$typeid;  
0 K* T- D. v7 B- e$ J; m/ w  L* z% z
替换为如下代码:( G2 `' B9 p: b1 q. b! T0 {
9 {' ?: m2 T" d1 B
//动态   7 c. @8 I" f* K# N, R3 u
$reurl = "/category/list-".$typeid.".html";  
" s- |# l1 {6 s; ?' @! p0 o3 a' ]  `: @2 O9 O  t
这步必须修改,即让你的频道或是列表页URL变更为/category/list-1.html形式。
; ?( Y% E: I4 q- c. E! i3.织梦列表分页伪静态
; C0 m* `! l6 W, {7 r 打开/include/arc.listview.class.php,找到获取动态的分页列表GetPageListDM()函数末尾处:
& _0 G5 i; r3 I
* c' x9 ^  G3 {; |$plist = str_replace('.php?tid=', '-', $plist);    f) G5 W0 _, N- ]
' h# a  |4 k' e. V! l1 S+ T) w
替换为如下代码:
+ Y  P3 H8 U/ {2 a. b& R8 N
' @) `5 m. I1 L$plist = str_replace('plus', 'category', $plist);//将默认的plus替换成category   * d+ G, E8 M7 R2 N- a7 x
$plist = str_replace('.php?tid=', '-', $plist);  
( L" K% P& H6 v( M
( d3 i5 U" D2 c+ @2 |将列表分页默认链接格式/plus/list-1-2-1.html修改为/category/list-1-2-1.html,这步也可以不作更改。' c+ T9 ^  Y7 ?5 ]8 s; [5 l
4.织梦文章分页伪静态/ G9 m* b' }! l& S- ?
打开/include/arc.archives.class.php,找到获取动态的分页列表GetPagebreakDM()函数末尾处:7 h6 S/ ?( M7 X5 e( \# q
; t% q& {8 ^/ \' a) G" A% c2 G
$PageList = str_replace(".php?aid=","-",$PageList);  / s, \, }6 p* b) d8 O) t# o3 Y
: ?8 d; A5 i! I- d( X8 x7 W
将其替换为如下代码:2 A, o" {, t$ F* U. {) W
, y/ f4 ]9 o  f) D
$plist = str_replace('plus', 'archives', $plist);//将默认的plus替换成archives   
) i1 q# x2 y3 L+ z* Y5 \% `$PageList = str_replace(".php?aid=","-",$PageList);  
% N* {0 a; L  `4 U5 ~
( U, f3 T- S3 Y- s这步不作修改也可以,只是个人喜好问题。
  ?: a3 H. n2 z/ ^6 k& M7 E/ A. [' h0 ^
5.织梦TAG标签伪静态: \. g3 p. [8 |1 v2 \/ I( ?$ Z
DedeCms默认的TAG标签URL,形如/tags.php?/dedecms5.7/,非常之难看。打开/include/taglib/tag.lib.php,找到lib_tag()函数下的:
# H5 T& |/ \8 x/ `, h# j  L# M
2 T# ]) g$ v/ Q4 Q$ I; k$row['link'] = $cfg_cmsurl."/tags.php?/".urlencode($row['keyword'])."/";  / k% `& g2 v* B7 g9 y- o
! h% o  `: y: z/ D9 h
将其替换为如下代码:8 W, f2 q! w% G) x- }, f+ j
( a5 ^2 h5 G/ t
$row['link'] = $cfg_cmsurl."/tags/".urlencode($row['keyword'])."/";  
* N1 j, E; P9 Y* d$ f
# z7 }& u! B* x到这里,TAG标签URL中的“.php?”号就去掉了。
1 i9 @. K% @2 U: a% R+ h$ } 依照上面的步骤修改完毕,接下来配置好你的伪静态规则,织梦全站伪静态就基本实现了。
3 ~$ c1 g+ k( p  r; W) \- ZIIS6.0(Windows主机)伪静态:/ k: I- K2 \( X* g0 b" C9 _
打开httpd.conf文件(也有的是http.ini文件),在其中加入如下规则:8 G" v# v/ j; p6 R) E

/ n) t( S# S. T( W7 A[mw_shl_code=applescript,true]#首页伪静态规则,如果不使用动态首页,请勿必删除这一行,否则打开首页会出现死循环   
1 ]: \8 S6 j8 @* i, V8 i0 ^- RRewriteRule ^(.*)/index\.html $1/index\.php [I]   ; X& V' Y2 V; }
#列表页伪静态规则   
8 Q5 d4 A- d5 n% L+ x0 vRewriteRule ^(.*)/category/list-([0-9]+)\.html $1/plus/list\.php\?tid=$2 [I]   
2 ?$ Z7 k! h3 E" \+ |7 f  l% j# tRewriteRule ^(.*)/category/list-([0-9]+)-([0-9]+)-([0-9]+)\.html $1/plus/list\.php\?tid=$2&TotalResult=$3&PageNo=$4 [I]   6 T9 Y( ?. E4 d
#文章页伪静态规则   & [4 G$ [) D3 f3 e# u$ A; U
RewriteRule ^(.*)/archives/view-([0-9]+)-([0-9]+)\.html $1/plus/view\.php\?arcID=$2&pageno=$3 [I]   0 u+ n( c1 ?; }4 ^: D- W
#搜索伪静态规则   1 l! J9 M% ^6 P" W; Q3 S7 A
RewriteRule ^(.*)/search\.html(?:(\?.*))* $1/search\.php?$2 [I]   
, d# U, b: r3 S#TAG标签伪静态规则   0 N4 @( J/ m# f7 j1 J! w
RewriteRule ^(.*)/tags\.html $1/tags\.php [I]   * n6 Q4 @' S  M1 [( I3 ]
RewriteRule ^(.*)/tags/(.*)(?:(\?.*))* $1/tags\.php\?\/$2 [I]   + `) K2 v5 o: v: W- {
RewriteRule ^(.*)/tags/(.*)\/(?:(\?.*))* $1/tags\.php\?\/$2\/ [I]   
8 L# |, P" ~5 {, `RewriteRule ^(.*)/tags/(.*)\/([0-9])(?:(\?.*))* $1/tags\.php\?\/$2\/$3 [I]   8 @: r0 }) \" {7 i9 ~! |/ ?) f
RewriteRule ^(.*)/tags/(.*)\/([0-9])\/(?:(\?.*))* $1/tags\.php\?\/$2\/$3\/ [I]   
5 h0 }6 Q# j: \5 c#问答伪静态规则,适用于DedeCmsV5.3-5.6版本,需要修改几处程序   # R0 E2 A$ Y7 J3 j0 h( V& `% d
RewriteRule ^(.*)/post\.html $1/post\.php [I]   . z. m! c4 v7 ^2 V2 h# y/ \/ ]8 H8 b
RewriteRule ^(.*)/type\.html $1/type\.php [I]   * i3 B' E% A2 [
RewriteRule ^(.*)/question-([0-9]+)\.html $1/question\.php\?id=$2 [I]   
( C$ Z6 ]2 @' a3 ]% y" iRewriteRule ^(.*)/browser-1-([0-9]+)\.html $1/browser\.php\?tid=$2 [I]   + C& g' t6 S; n( w1 g" ?* q
RewriteRule ^(.*)/browser-2-([0-9]+)\.html $1/browser\.php\?tid2=$2 [I]   - \: E' A* h) R2 [
RewriteRule ^(.*)/browser-1-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid=$2&page=$3 [I]   / T# f; O2 W: u4 b, N& `0 v6 E
RewriteRule ^(.*)/browser-2-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid2=$2&page=$3 [I]   
7 ]  L6 o2 D* W& aRewriteRule ^(.*)/browser-([0-9]+)\.html $1/browser\.php\?lm=$2 [I]   
% r# e& h$ V8 ^$ M3 NRewriteRule ^(.*)/browser-1-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid=$2&lm=$3 [I]   % M8 M. A7 Z& [6 Y1 b# T3 N
RewriteRule ^(.*)/browser-2-([0-9]+)-([0-9]+)\.html $1/browser\.php\?tid2=$2&lm=$3 [I]  [/mw_shl_code]# z( N+ F8 m- z# w7 N  w; X
7 k* a4 p4 {7 q) w5 D. k
2.Apache(linux主机)伪静态:5 L! ~) T. p( V9 z1 y' b0 q  p; Q
打开.htaccess文件,加入如下规则:
% _& A' v9 g# c+ k  u; u2 Q! M7 `" ?% r" a
[mw_shl_code=applescript,true]#提供部分规则作参考   ! [8 w# G. c' c' ^- R
RewriteRule ^category/list-([0-9]+)\.html$ /plus/list.php?tid=$1   6 @5 R: i" w( f) E6 r
RewriteRule ^category/list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3   2 ~3 U9 k7 {; G1 I' V4 r
RewriteRule ^archives/view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?arcID=$1&pageno=$2  [/mw_shl_code]
! ^* g. H4 T' z$ t+ e4 _# ^3 e; w3 L. b6 a" `4 D
注意事项:4 _* @. C( I4 a0 L
1.要用专业的编辑器编辑代码,如dreamweaver。修改之前一定要备份好原文件。& P1 J) ~9 A( ?/ M/ W" @4 o
2.上文提到的方法可能有不完善的地方,因此属于仅供参考,具体实施的时候建议在空间客服人员的指导之下完成。! t! A$ Y2 x  [, `" s: C2 Q( F. H! k0 T
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|第一站论坛 ( 蜀ICP备06004864号-6 )

GMT+8, 2024-3-29 23:42 , Processed in 0.080996 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表