此種方法,可以自定義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;