帝国cms伪静态栏目改为拼音的办法

来自:互联网
时间:2020-12-01
阅读:

此种方法,可以自定义url地址,例如可以用拼音做目录,而不是帝国默认用id做目录。并且不用更改系统文件,直接上传插件,设置栏目属性,之后添加伪静态规则就可以执行了。具体方法如下:

1、设置栏目属性——生成选项,设置如下:

(1)栏目页模式:静态页面

(2)内容页模式:静态页面

(3)是否生成:不生成栏目页、不生成内容页

(4)内容页目录存放形式:不设置目录

注意事项:

(1)内容页文件命名形式 不能是目录,但是支持信息文件名的修改,URL也能很好看

(2)栏目目录和信息文件名是英文或数字(栏目目录建议英文或英文开头,“-_”上下划线留着给别的东西用吧避免冲突如其它伪静态,避免冲突)

2、在/e/action/下增加如下php文件:

列表list.php代码:附件中

内容show.php代码:附件中

附件在灰灰个人博客工具

3、在网站空间添加伪静态规则

(1)Apache下的伪静态规则

RewriteEngine On
Rewritebase /
#信息内容页
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^showinfo-([0-9]+)-([0-9]+)-([0-9]+).html$ /e/action/ShowInfo.php?classid=$1&id=$2&page=$3 [NC,L]
#信息列表
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^listinfo-([0-9]+)-([0-9]+).html$ /e/action/ListInfo/index.php?classid=$1&page=$2 [NC,L]
#标题分类列表页
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^infotype-([0-9]+)-([0-9]+).html$ /e/action/InfoType/index.php?ttid=$1&page=$2 [NC,L]
#TAGS信息列表页
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^tags-(.+?)-([0-9]+).html$ /e/tags/index.php?tagname=$1&page=$2 [NC,L]
#评论列表页
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^comment-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+).html$ /e/pl/index.php?doaction=$1&classid=$2&id=$3&page=$4&myorder=$5&tempid=$6 [NC,L]
 
#栏目
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(d/|e/|html/|images/|s/|search/|skin/|t/|ad)
RewriteRule ^([0-9a-zA-Z-/]+)/(|index.html|index_[0-9]+.html)$ /e/action/list.php?classid=$1&page=$2 [NC,L]
#内容
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(d/|e/|html/|images/|s/|search/|skin/|t/|ad)
RewriteRule ^([0-9a-zA-Z-/]+)/([0-9a-zA-Z]+)([_0-9]*).html$ /e/action/show.php?classid=$1&id=$2&page=$3 [NC,L]

(2)在Nginx下的伪静态规则

if ($args ~ "^(.*)$"){
set $rule_0 1$rule_0;
}
if (!-f $request_filename){
set $rule_0 2$rule_0;
}
if ($rule_0 !~ "^(d/|e/|html/|images/|s/|search/|skin/|t/)"){
set $rule_0 3$rule_0;
}
if ($rule_0 = "321"){
rewrite ^/([0-9a-zA-Z/]+)/(|index.html|index_[0-9]+.html)$ /e/action/list.php?classid=$1&page=$2;
}
if ($args ~ "^(.*)$"){
set $rule_1 1$rule_1;
}
if (!-f $request_filename){
set $rule_1 2$rule_1;
}
if ($rule_1 !~ "^(d/|e/|html/|images/|s/|search/|skin/|t/)"){
set $rule_1 3$rule_1;
}
if ($rule_1 = "321"){
rewrite ^/([0-9a-zA-Z/]+)/([0-9a-zA-Z]+)([_0-9]*).html$ /e/action/show.php?classid=$1&id=$2&page=$3;
}

上面这个规则是可以让前台的栏目、内容页都正常显示,但会导致其他的动态页面出问题。例如会员系统是动态页面,登录时就会提示链接不存在。

(3)在Nginx下给各栏目单独写伪静态规则 这种方法的好处是,直接给某个栏目写规则,不会影响其他的链接,例如不会影响会员系统等。但这种方法缺点是,麻烦,需要每个栏目都写规则,并且如果只有一级栏目,规则比较好写,如果有二级栏目、三级栏目就会不好写,内容页链接就可能不对。 下面演示一个例子:

#tag标签
rewrite ^/tags-(.*)-(.*)$ /e/tags/index.php?tagid=$1&page=$2;
 
#栏目页
rewrite ^/news/$ /e/action/list.php?classid=34&url=news;
 
#栏目页2
rewrite ^/news/index.html$ /e/action/list.php?classid=34&url=news;
 
#列表页分页
rewrite ^/news/index_([0-9]+).html$ /e/action/list.php?classid=34&url=news&page=$1;
 
#内容页
rewrite ^/news/([0-9]+).html$ /e/action/show.php?classid=34&id=$1;
返回顶部
顶部