`
jishublog
  • 浏览: 872798 次
文章分类
社区版块
存档分类
最新评论

百度应用引擎(BAE)中实现WordPress固定链接及伪静态

 
阅读更多

写在前面

有一好友在BAE上搭建了自己的WordPress博客,但由于BAE推出的时间较晚,不像SAE那样已经具备较为完善的应用仓库,对WordPress博客程序也没有官方的支持,而固定链接对于一个博客来说是比较重要的,伪静态有利于搜索引擎优化,而链接的格式若不尽早确定,日后再想改变将是一件非常麻烦的事情。


什么是BAE

百度应用引擎(Baidu App Engine,简称BAE)是基于百度基础架构推出的网络应用开发平台,基于BAE架构,使开发者不需要维护任何服务器,只需要简单的上传应用程序,就可以为用户提供服务。BAE有能力将原本单机的LAMP架构,变成分布式架构。

开发者可以基于BAE平台进行PHPJavaPython应用的开发、编译、发布、调试。同时BAE平台也提供了大量的云服务给开发者,包括fetch URL、task queue、SQL、memcache,后续会提供更多服务。在性能方面,如果开发者希望增加服务能力,可以通过申请更多执行单元的方式进行灵活的调整。

BAE服务可以让开发者在开发网络应用程序的过程中摆脱繁琐的环境、服务问题,把精力专注于业务逻辑。

简单的上传应用程序,就可以为用户提供服务。BAE有能力将原本单机的LAMP架构,变成分布式架构。
开发者可以基于BAE平台进行PHP、Java、Pyt应用的开发、编译、发布、调试。同时BAE平台也提供了大量的云服务给开发者,包括fetch URL、task queue、SQL、memcache,后续会提供更多服务。在性能方面,如果开发者希望增加服务能力,可以通过申请更多执行单元的方式进行灵活的调整。


BAE中的rewrite

Rewrite是一种服务器的重写脉冲技术,它可以使得服务器可以支持 URL 重写,是一种最新流行的服务器技术。ewrite主要的功能就是实现URL的重写,它的正则表达式是基于Perl语言。可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式。

在BAE中,rewrite是使用应用配置中的url配置来实现的,文档(详见BAE应用配置教程)中说明,url配置的功能类似url rewrite功能。将符合匹配规则的url重写到指定的脚本处理。Rewrite规则可以配置多条。顺序是从上往下依次匹配,遇到第一个匹配成功的即结束配置过程。另外, 并不需要请求的uri完全匹配指定的正则,只要其中有部分内容匹配即可。

BAE url配置

从中也可以看出,BAE对url配置的文档并不详尽,对于许多人来说,实在是一个不小的难题。


如何实现伪静态

在SAE中,WordPress伪静态的实现方式是在配置文件中添加如下rewrite规则:

  1. -rewrite:if(!is_file()&&!is_dir()&&path~"^/(.*)")goto"index.php/$1"

可以看出原理为:将既不是文件,也不是文件夹的地址转发至index.php/之后,既是将伪静态路径作为参数使用pathinfo的形式传至index.php,由单一入口文件index.php统一处理,解析并显示出所对应的内容。

同样的方式在BAE却彻底地失败了,首先,我并不知道BAE中如何判断一个路径是否文件或文件夹,其次直接将某个地址rewrite到index.php/之后,却出现了404错误页面,这说明了一个问题:BAE不支持pathinfo!

后来,我直接将所有特定格式的路径(文章、搜索、归档、标签、类别、独立页面)rewrite到相对应的原本地址上:

比如:

http://binary.duapp.com/2012/11/629.html

rewrite到:

http://binary.duapp.com/index.php?p=629

进而发现,其实只要将所有需要设置固定链接的路径重写至index.php即可,WordPress会根据当前路径自动判断并显示出当前内容。

好了,说了这么多,也该上最重要的部分了,以下面的固定链接格式为例:

  1. /%year%/%monthnum%/%post_id%.html

所需的配置信息如下:

规则类型 规则 执行
url /.*/.*/.*.html /index.php
url /rss.xml /index.php
url /feed /index.php
url /comments/feed /index.php
url /feed/.* /index.php
url /author/.* /index.php
url /search/.* /index.php
url /tag/.* /index.php
url /category/.* /index.php
url /date/.* /index.php
url /page/.* /index.php

这样便搞定了,当然,如果你有独立页面,那么需要再为每一个独立页面多添加一条规则,以(http://www.clanfei.com/about/)为例:

规则类型 规则 执行
url /about /index.php

或许有人会问,既然全部都是重写至index.php,何不直接把/.*重写至/index.php呢?答案其实很简单,因为除了上述的一些固定链接之外,还有许多路径是不需要重写的,比如wp-content目录,wp-admin目录,如果把这些地址也rewrite了的话,将会出现许多足以致命的错误。



=======================签 名 档=======================

原文地址(我的博客):http://www.clanfei.com/2012/11/1664.html
欢迎访问交流,至于我为什么要多弄一个博客,因为我热爱前端,热爱网页,我更希望有一个更加自由、真正属于我自己的小站,或许并不是那么有名气,但至少能够让我为了它而加倍努力。。
=======================签 名 档=======================




分享到:
评论

相关推荐

    基于Python和Django的百度应用引擎BAE示例应用设计源码

    本源码提供了一个基于Python和Django的百度应用引擎BAE示例应用设计。项目包含2370个文件,其中包括1171个PO文件、826个Python源文件、102个GIF图片、98个HTML文件、68个JavaScript文件、24个CSS样式文件、21个PNG...

    wordpress 百度BAE版 v3.4.2

    1、替换了 wp_mail 函数,采用百度云消息来实现邮件的发送2、解决 WordPress 在 BAE 运行时的乱码问题3、自带一个BCS百度云存储插件,方便你上传管理文件4、支持Wordpress固定链接即Url重写伪静态5、中文版本的...

    百度应用引擎BAE正式开放.docx

    百度应用引擎BAE正式开放.docx

    百度云bae wordpress sitemap 添加方法

    百度云bae wordpress sitemap 添加相关程序文件,请将附件中Sitemap.php app.conf 放在应用根目录下,更新即可生效。

    BAE上wordpress配置样本

    BAE配置wordpress的配置文件样本。 详见http://blog.csdn.net/limb99/article/details/18842407

    基于PHP的wordpress 百度BAE版.zip

    基于PHP的wordpress 百度BAE版.zip

    基于PHP的wordpress百度BAE版源码.zip

    基于PHP的wordpress百度BAE版源码.zip

    wordpress 3.5.1 for BAE

    wordpress for BAE 3.5.1

    wordpress 3.7 for BAE

    wordpress 3.7 for BAE

    wordpress 3.8 for BAE

    wordpress 3.8 for BAE

    WordPress 3.6.1 For BAE.zip

    自从上次东子从BAE搬到cubic后,已经有半年多了,当时BAE刚起步,兼容性不怎么好...伪静态正常。BCS也没有问题,东子测试图片上传插入均正常。 安装后在后台插件启用BCS,填入你的“桶”名称。有什么问题欢迎留言反馈

    BAE-introduce.zip_百度bae

    百度BAE介绍、百度BAE介绍、百度BAE介绍、百度BAE介绍

    百度贴吧签到BAE版

    百度贴吧签到BAE版 云签到 解放双手! 每天6分

    百度BAE环境下的ssh应用

    可以运行在百度云服务器上 1、本示例是一个简单的ssh应用,对单表进行新增和查询操作; 2、使用ssh版本为struts2-core-2.3.1.2,spring-aop-3.0.5.RELEASE,hibernate-3.6.5.Final; 3、struts2的配置采用xml(目前不...

    HiBCS 百度BAE版 v1.0 build20121221

    特别提示:本代码至少需百度应用引擎(BAE)中的百度云存储(BCS)支持 安装: config.php 填写BAE数据库名称 通过平台提供的phpMyAdmin访问 导入baefile.sql或使用install.php 不支持URL Rewrite请自行将no-...

    Wordpress博客程序bae版

    百度开发上安装博客,此版为百度bae版!

    Wordpress BAE v3.6.zip

    WordPress BAE 3.6 梦月酱移植版 概述 整合了无XSL的Google Sitemap.这样谷歌网站管理员不会提示无法索引 整合了正常无措的百度网站地图.有利于SEO 整合了MP6插件美化后台 整合了多说评论插件,因为BAE评论始终有...

    百度BAE说明文档

    BAE概念&&原理 基本使用三步曲 高效在线调试 其他功能及服务 常见问题&&改进 BAE是什么 BAE是百度推出的网络应用

    HiBCS 百度BAE版 v1.0 beta build20121212

    特别提示:本代码至少需百度应用引擎(BAE)中的百度云存储(BCS)支持 Licensed under the Apache License v2.0 http://www.apache.org/licenses/LICENSE-2.0 config.php 填写BAE数据库名称 通过平台提供的...

Global site tag (gtag.js) - Google Analytics