這個作SEO的時候很是須要,之前從DEDECMS轉戰PHPCMS,最痛苦的就是設置僞靜態,一直想設置 欄目名/文章ID.html 這樣的規則,可是顯然PHPCMS默認不提供,只提供最原始的 list-1-1.html ,show-1-1.html,這種URL對搜索引擎和用戶都是不友好的(不符合百度搜索引擎指南中對URL友好的描述),哈哈,或者只是本身糾結。php
若是非要之前非要這麼設置的話,就得一條條手工加,沒想到竟然有一天本身也能破這個問題(其實只是個簡單的讀數據庫的問題)。html
第一步:PHPCMS後臺設置規則(默認已經開啓Apache僞靜態)mysql
第二部:生成.htaccesssql
把下面文件複製到文檔,後綴改成PHP,放置在PHPCMS的根目錄,運行http://admin.com/設置的文件.php,便可生成.htaccess文件數據庫
<?php define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR); include PHPCMS_PATH.'/phpcms/base.php'; //pc_base::creat_app(); $db_config = pc_base::load_config('database'); //讀取配置文件 pc_base::load_sys_class('mysql', '', 0); pc_base::load_sys_class('param', '', 0); pc_base::load_model('content_model'); $db=new mysql(); $db->open($db_config['default']); $pre = $db_config['default']['tablepre']; //讀取表前綴 $db->connect(); $catprefix = 'list'; $catrule .= "<IfModule mod_rewrite.c>\n"; $catrule .= "RewriteEngine on\n"; $catdata = $db->select('catid,catdir,parentid',"{$pre}category","type=0"); foreach($catdata as $item){ $catdir = $item['catdir']; $catid = $item['catid']; $parentid = $item['parentid'] ? $item['parentid'] : ""; if(trim($parentid)){ $parentdir = $db->select('catdir',"{$pre}category","catid={$parentid}")[0]['catdir']; $catrule .= "RewriteRule ^{$parentdir}/{$catdir}/([0-9]+)-([0-9]+).html index.php?m=content&c=index&a=show&catid={$catid}&id=$2&page=$3\n"; } $catrule .= "RewriteRule ^{$catdir}/([0-9]+)-([0-9]+).html index.php?m=content&c=index&a=show&catid={$catid}&id=$2&page=$3\n"; } $catrule .= "RewriteRule ^{$catprefix}/([0-9]+)_([0-9]+).html index.php?m=content&c=index&a=lists&catid=$1&page=$2\n"; $catrule .= "</IfModule>\n"; file_put_contents(PHPCMS_PATH.'/.htaccess',$catrule); /*RewriteEngine on RewriteRule ^content-([0-9]+)-([0-9]+)-([0-9]+).html index.php?m=content&c=index&a=show&catid=$1&id=$2&page=$3 RewriteRule ^show-([0-9]+)-([0-9]+)-([0-9]+).html index.php?m=content&c=index&a=show&catid=$1&id=$2&page=$3 RewriteRule ^list-([0-9]+)-([0-9]+).html index.php?m=content&c=index&a=lists&catid=$1&page=$2*/