什么是伪静态?

伪静态技术是指展示出来的是以.html一类的静态页面形式。伪静态只是改变了URL的表现形式,实际上还是动态页面。

WordPress 实现伪静态的原理

生成一个以.html结尾的地址(url) —-> 利用rewrite规则转换 —-> 实际页面地址
所以,我们要解决的问题就是

  • 生成以 .html 结尾的网址
  • 整理 rewrite 规则

    WordPress 整理rewrite规则

    将下面代码添加主题functions.php中 ```php <?php function ribs_rewrite_rules() { add_rewrite_rule(‘(.?.+?)(?:-page-([0-9]+)).html?/?$’, ‘index.php?pagename=$matches[1]&page=$matches[2]’, ‘top’); //page add_rewrite_rule(‘(.?.+?).html(?:/([0-9]+))?/?$’, ‘index.php?pagename=$matches[1]&page=$matches[2]’, ‘top’); //page add_rewrite_rule(‘[^/]+(?:/attachment-(.+)).html?/?$’, ‘index.php?attachment=$matches[1]’, ‘top’); add_rewrite_rule(‘([^/]+)(?:-page-([0-9]+)).html?/?$’, ‘index.php?name=$matches[1]&page=$matches[2]’, ‘top’); //post add_rewrite_rule(‘([^/]+).html(?:/([0-9]+))?/?$’, ‘index.php?name=$matches[1]&page=$matches[2]’, ‘top’); //post

} add_action(‘registered_post_type’, ‘ribs_rewrite_rules’);

  1. <a name="trz5G"></a>
  2. ### WordPress 生成以.html结尾的网址
  3. <a name="Rf3B7"></a>
  4. #### WordPress文章伪静态
  5. 默认WordPress文章能实现伪静态链接。<br />打开 【设置】>【固定链接】
  6. 设置固定链接形式,推荐<br />/%postname%<br />/%post_id%<br />将下面代码添加主题`functions.php`中即可。
  7. ```php
  8. function ribs_post_permalink($permalink, $post, $leavename) {
  9. if (strpos($permalink, '?p=' . $post->ID) === false) {
  10. $permalink = $permalink . '.html';
  11. }
  12. return $permalink;
  13. }
  14. add_filter('post_link', 'ribs_post_permalink', 1, 3);

WordPress页面伪静态

默认WordPress页面不能实现伪静态链接,比如:http://inli.work/hehe.html,手动在链接中添加“.html”,会自动转码为"-html",但万能的WordPress,你能想到的功能都会有相应的办法帮你实现。
将下面代码添加主题functions.php中即可。

// 页面链接添加html后缀
function ribs_page_permalink($link, $postID) {
    if (strpos($link, '?page_id=' . $postID) === false) {
        $link = $link . '.html';
    }
    return $link;
}
add_filter('_get_page_link', 'ribs_page_permalink', 1, 2);


添加后,需要到 固定链接设置 页面,重新保存一下固定链接设置,否则不会生效。
上述代码适合伪静态的固定链接形式使用(必须),比如:
/%postname%
/%post_id%

WordPress附件页面伪静态

前提条件:父页面以.html结尾。
将下面代码添加主题functions.php中即可。

// 页面链接添加html后缀
function ribs_attachment_permalink($link, $postID) {
    $link = preg_replace('/(.+?)\.html(?:\/(.+?))?\//', '$1/attachment-$2.html', $link);
    return $link;
}
add_filter('attachment_link', 'ribs_attachment_permalink', 1, 2);

WordPress 分页伪静态

待完善

WordPress分类目录添加斜杠

首先我们需要知道为什么要给WordPress分类目录添加斜杠。
分类目录顾名思义就是一个目录,众所周知,目录链接应该像这样 :
http://www.inli.work/category/hehe/
但有些时候因为我们的伪静态规则设置问题在WordPress分类目录后并没有斜杠 / ,会出现:
http://www.inli.work/category/hehe
像这样的情况。
这对搜索引擎是不友好的,因为带有斜杠时搜索引擎能及时识别出这是一个目录,而没有斜杠时则要分析。(就现在这行业水平,误判是常有的事,有做留意SEO的童鞋都知道。)
所以,我们需要给WordPress分类目录添加斜杠。
我们只需要把以下代码加在主题目录的 functions.php 中即可:

function nice_trailingslashit($string, $type_of_url) {
    if ($type_of_url != 'single' && $type_of_url != 'page' && $type_of_url != 'paged' && $type_of_url != 'single_paged') $string = trailingslashit($string);
    return $string;
}
add_filter('user_trailingslashit', 'nice_trailingslashit', 10, 2);

排除页面文件,否则页面链接.html后面也会自动加上斜杠。

WordPress自定义文章类型伪静态

安装插件 Custom Post Type Permalinks