此种方法,可以自定义url地址,例如可以用拼音做目录,而不是帝国默认用id做目录。并且不用更改系统文件,直接上传插件,设置栏目属性,之后添加伪静态规则就可以执行了。具体方法如下:
1、设置栏目属性——生成选项,设置如下:
(1)栏目页模式:静态页面
(2)内容页模式:静态页面
(3)是否生成:不生成栏目页、不生成内容页
(4)内容页目录存放形式:不设置目录
注意事项:
(1)内容页文件命名形式 不能是目录,但是支持信息文件名的修改,URL也能很好看
(2)栏目目录和信息文件名是英文或数字(栏目目录建议英文或英文开头,“-_”上下划线留着给别的东西用吧避免冲突如其它伪静态,避免冲突)
2、在/e/action/下增加如下php文件:
列表list.php代码:附件中
内容show.php代码:附件中
3、在网站空间添加伪静态规则
(1)Apache下的伪静态规则
#栏目
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(d/|e/|html/|images/|s/|search/|skin/|t/)
RewriteRule ^([0-9a-zA-Z/]+)/(|index/.html|index_[0-9]+/.html)$ /e/action/list/.php/?classid=$1&page=$2
#内容
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(d/|e/|html/|images/|s/|search/|skin/|t/)
RewriteRule ^([0-9a-zA-Z/]+)/([0-9a-zA-Z]+)([_0-9]*)/.html$ /e/action/show/.php/?classid=$1&id=$2&page=$3
(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 ($rule_0 = "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;