SEO工具箱:PHP自动生成PHPCMS伪静态规则.htaccess

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SEO工具箱:PHP自动生成PHPCMS伪静态规则.htaccess相关的知识,希望对你有一定的参考价值。

这个做SEO的时候非常需要,以前从DEDECMS转战phpCMS,最痛苦的就是设置伪静态,一直想设置 栏目名/文章ID.html 这样的规则,但是显然PHPCMS默认不提供,只提供最原始的 list-1-1.html ,show-1-1.html,这种URL对搜索引擎和用户都是不友好的(不符合百度搜索引擎指南中对URL友好的描述),哈哈,或者只是自己纠结。

如果非要以前非要这么设置的话,就得一条条手工加,没想到居然有一天自己也能破这个问题(其实只是个简单的读数据库的问题)。

第一步:PHPCMS后台设置规则(默认已经开启Apache伪静态)

技术分享

第二部:生成.htaccess

把下面文件复制到文档,后缀改为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*/

 

以上是关于SEO工具箱:PHP自动生成PHPCMS伪静态规则.htaccess的主要内容,如果未能解决你的问题,请参考以下文章

PHPCMS手机插件把手机跟PC一样静态的办法

问一个伪静态htaccess的写法

网站优化之PHPCMS如何开启伪静态

phpcms怎么生成静态网站

phpcms手机站伪静态后您要查看的信息不存在或者还未通过审批!

.htaccess中带?参数的重定向伪静态写法