作为一款轻型博客建站程序,z-blog算是做比较优秀的网站建站程序,做网站seo这一块不能少,而伪静态就是其中的一项,今天就来说说z-blog php伪静态规则的配置方案与相关问题,希望对你有用。

以目前的z-blog php为例子,它自带了一个伪静态插件,叫做静态管理中心 1.6,在做伪静态的时候,它直到至关重要的作用。

打开它,可以看到默认为动态,如果要实现伪静态功能,勾选中间的伪静态即可,如下图:

如果不想修改,直接滚动到页面最下边,点击“提交”,但是对我这个有点弱的人来说,每个文章的链接地址都要符合自己的意思才肯放过,因此重新修改url的生成规则是必不可少的,但是面对这么多规则,它们都代表什么,自己必须先弄懂。

规则说明

{%host%}:表示网站域名,后面自带“/”所以在与其他规则搭配时,一般不加“/”。

{%id%}:表示文章或分类ID;

{%page%}:表示分页条数字ID;

{%year%}:表示年份;

{%month%}:表示月份;

{%date%}:代表日期,一般不会用它;

{%alias%}:代表别名,在文章处代表文章标题,在分类处又代表分类别名,其他也是一样;

{%category%}:表示分类名,如果不设置英文别名,它就会调用中文分类名,建议设置英文别名

说明:除{%host%}外,其他的参数都需要加上“/”。一些外围名称,如post、page、category、tags、date、author、可以设置成任意名称,但像{%date%}这样的参数就不能修改。

我一般其他的都不管,只需要修改文章url、首页url、分类url和标签的url。用换规则如下

文章url与展现样式:http://localhost/prose/1.html

{%host%}{%category%}/{%id%}.html

首页url与展现样式:http://localhost/index.html

{%host%}index.html

分类url与展现样式:http://localhost/prose/list_2.html

{%host%}{%alias%}/list_{%page%}.htm

标签的url与展现样式:http://localhost/tags/散文.html

{%host%}tags/{%alias%}.html

把伪静态的规则添加到插件中

虽然以上的规则可以通过手动添加到伪静态下面的表单中,但是每次在动态与静态当中切换后,就会重置成默认规则,要添加又要重复手动添加,相当麻烦,此时只需要把这些规则一次性的添加到插件的php文件,打开后就可以在表单框中看到自定义的规则。

首先通过路径\zb_users\plugin\STACentre\,并用记事本打开main.php文件,用查找:

{%host%}post/{%id%}.html

这个规则,找到大约53行的:

'ZC_ARTICLE_REGEX' => array

到第95行的:),

即97行的:

'ZC_DATE_REGEX' => array(

上面,选择它,该代码如下

'ZC_ARTICLE_REGEX' => array(
        '{%host%}?id={%id%}',
        '{%host%}index.php/post/{%id%}.html',
        '{%host%}post/{%id%}.html',
        '{%host%}post/{%alias%}.html',
        '{%host%}{%year%}/{%month%}/{%id%}/',
        '{%host%}{%category%}/{%alias%}/',
    ),

    'ZC_PAGE_REGEX' => array(
        '{%host%}?id={%id%}',
        '{%host%}index.php/{%id%}.html',
        '{%host%}{%id%}.html',
        '{%host%}{%alias%}.html',
        '{%host%}{%alias%}/',
        //'{%host%}{%alias%}',
    ),

    'ZC_INDEX_REGEX' => array(
        '{%host%}?page={%page%}',
        '{%host%}index.php/page_{%page%}.html',
        '{%host%}page_{%page%}.html',
        '{%host%}page_{%page%}/',
        //'{%host%}page_{%page%}',
        '{%host%}page/{%page%}/',
    ),

    'ZC_CATEGORY_REGEX' => array(
        '{%host%}?cate={%id%}&page={%page%}',
        '{%host%}index.php/category-{%id%}_{%page%}.html',
        '{%host%}category-{%id%}_{%page%}.html',
        '{%host%}category-{%alias%}_{%page%}.html',
        '{%host%}category/{%alias%}/{%page%}/',
        '{%host%}category/{%id%}/{%page%}/',
    ),

    'ZC_TAGS_REGEX' => array(
        '{%host%}?tags={%id%}&page={%page%}',
        '{%host%}index.php/tags-{%id%}_{%page%}.html',
        '{%host%}tags-{%id%}_{%page%}.html',
        '{%host%}tags-{%alias%}_{%page%}.html',
        '{%host%}tags/{%alias%}/{%page%}/',
    ),

复制下面我已经修改好的代码覆盖掉,代码如下:

    'ZC_ARTICLE_REGEX' => array(
        '{%host%}?id={%id%}',
        '{%host%}index.php/post/{%id%}.html',
        '{%host%}post/{%id%}.html',
        '{%host%}post/{%alias%}.html',
        '{%host%}{%year%}/{%month%}/{%id%}/',
        '{%host%}{%category%}/{%alias%}/',
        '{%host%}{%category%}/{%id%}.html',//自定义文章URL规则
    ),

    'ZC_PAGE_REGEX' => array(
        '{%host%}?id={%id%}',
        '{%host%}index.php/{%id%}.html',
        '{%host%}{%id%}.html',
        '{%host%}{%alias%}.html',
        '{%host%}{%alias%}/',
        //'{%host%}{%alias%}',
    ),

    'ZC_INDEX_REGEX' => array(
        '{%host%}?page={%page%}',
        '{%host%}index.php/page_{%page%}.html',
        '{%host%}page_{%page%}.html',
        '{%host%}page_{%page%}/',
        //'{%host%}page_{%page%}',
        '{%host%}page/{%page%}/',
        '{%host%}index.html',//自定义首页规则
    ),

    'ZC_CATEGORY_REGEX' => array(
        '{%host%}?cate={%id%}&page={%page%}',
        '{%host%}index.php/category-{%id%}_{%page%}.html',
        '{%host%}category-{%id%}_{%page%}.html',
        '{%host%}category-{%alias%}_{%page%}.html',
        '{%host%}category/{%alias%}/{%page%}/',
        '{%host%}category/{%id%}/{%page%}/',
        '{%host%}{%alias%}/list_{%page%}.html',//自定义分类规则
    ),

    'ZC_TAGS_REGEX' => array(
        '{%host%}?tags={%id%}&page={%page%}',
        '{%host%}index.php/tags-{%id%}_{%page%}.html',
        '{%host%}tags-{%id%}_{%page%}.html',
        '{%host%}tags-{%alias%}_{%page%}.html',
        '{%host%}tags/{%alias%}/{%page%}/',
        '{%host%}tags/{%alias%}.html',//自定义标签规则
    ),

覆盖好man.php文件后保存,刷新下后台,此时你会发现在每个我们需要修改的规则最后,就有自己添加的单选框,当插件重置为默认值时,我们只需要重新勾选这些单选框后插件就算添加到表单中,最后点击提交,并点击弹出来的ReWrite规则框下的“创建.htaccess”,就可以实现伪静态,非常省事。

当然到这一步事情还没完,因为通过这样的操作后,主页和分类都会出问题,我们还需要进行下一步的修改。

导航栏模块的修改

在后台找到“模块管理”,在右边找到“导航栏”,打开它,在链接下面就有我设置的4个导航,链接如下:

http://localhost/
http://localhost/?cate=1
http://localhost/?cate=2
http://localhost/?cate=3

这里需要做好笔记,等到需要改为动态的时候还需要设置回来。

这4个分类栏目链接分别对应首页、散文一、散文二、散文三。对应的别名除了首页外分别为prose1、prose2、prose3,分别把它们修改成如下样式:

http://localhost/index.html
http://localhost/prose1/list.html
http://localhost/prose2/list.html
http://localhost/prose3/list.html

当然这些都只是例子,需要把它们修改成你网站的真实栏目别名。当然到这里也还没有完成,因为首页还有问题。

接下来我们需要对网站根目录的index.php文件进行修改。

修改首页index.php文件

用记事本打开网站根目录的index.php文件,原始代码如下:

require 'zb_system/function/c_system_base.php';
$zbp->RedirectInstall();
$zbp->Load();
HookFilterPlugin('Filter_Plugin_Index_Begin');
ViewIndex();
HookFilterPlugin('Filter_Plugin_Index_End');

全选它,复制下面的代码:

require 'zb_system/function/c_system_base.php';
$zbp->RedirectInstall();
$zbp->Load();

// 确认伪静态状态
$is_pseudo_static = false;
if (isset($zbp->option['ZC_STATIC_MODE']) && $zbp->option['ZC_STATIC_MODE'] === 'REWRITE') {
    $is_pseudo_static = true;
}

// 定义不需要重定向的查询参数,比如默认分类面中http://localhost/?cate=1带有“cate”这个参数,所以下面就列出来,其他也是一样修改即可。
$excluded_query_params = ['cate', 'tag', 'author'];

// 检查是否为根路径请求,并且启用了伪静态
if ($is_pseudo_static) {
    // 获取当前请求的完整URL路径部分和查询字符串
    $request_uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    $query_string = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';

    // 去除可能存在的尾部斜杠,确保一致性
    $request_uri = trim($request_uri, '/');

    // 只有当请求的是根路径并且没有排除的查询参数时才进行重定向
    if ($request_uri === '' || $request_uri === '/') {
        // 解析查询字符串为数组
        parse_str($query_string, $query_array);

        // 检查是否有任何排除的查询参数
        $should_redirect = true;
        foreach ($excluded_query_params as $param) {
            if (isset($query_array[$param])) {
                // 如果存在任何一个排除的查询参数,则不重定向
                $should_redirect = false;
                break;
            }
        }

        // 如果没有匹配到任何排除的查询参数,则进行重定向
        if ($should_redirect) {
            header('Location: /index.html');
            exit;
        }
    }
}

// 继续执行原有代码
HookFilterPlugin('Filter_Plugin_Index_Begin');
ViewIndex();
HookFilterPlugin('Filter_Plugin_Index_End');

覆盖并保存。刷新下页面就可以实现我们需要的效果。

为什么要修改index.php文件,是因为通过对网站根目录下的.htaccess进行规则修改、又或者检查apache服务器中的httpd.conf配置文件中的:

LoadModule rewrite_module modules/mod_rewrite.so

前面的“#”号是否去掉,并修改首页的文件顺序为:

DirectoryIndex index.html index.php

又或者把导航模块中的首页设置成:

http://localhost/index.html

都无效时,只能通过修改index.php文件去实现跳转,达到良好的伪静态效果。相关说明都已经在代码的注释中,可以自行查看。

你可能想看:
文章来源:http://www.zhu-sir.com/jiaocheng/65.html
百度搜索本文
谷歌搜索本文

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

返回顶部