写在前面
有一好友在BAE上搭建了自己的WordPress博客,但由于BAE推出的时间较晚,不像SAE那样已经具备较为完善的应用仓库,对WordPress博客程序也没有官方的支持,而固定链接对于一个博客来说是比较重要的,伪静态有利于搜索引擎优化,而链接的格式若不尽早确定,日后再想改变将是一件非常麻烦的事情。
什么是BAE
百度应用引擎(Baidu App Engine,简称BAE)是基于百度基础架构推出的网络应用开发平台,基于BAE架构,使开发者不需要维护任何服务器,只需要简单的上传应用程序,就可以为用户提供服务。BAE有能力将原本单机的LAMP架构,变成分布式架构。
开发者可以基于BAE平台进行PHP、Java、Python应用的开发、编译、发布、调试。同时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配置的文档并不详尽,对于许多人来说,实在是一个不小的难题。
如何实现伪静态
在SAE中,WordPress伪静态的实现方式是在配置文件中添加如下rewrite规则:
-
-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会根据当前路径自动判断并显示出当前内容。
好了,说了这么多,也该上最重要的部分了,以下面的固定链接格式为例:
-
/%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示例应用设计。项目包含2370个文件,其中包括1171个PO文件、826个Python源文件、102个GIF图片、98个HTML文件、68个JavaScript文件、24个CSS样式文件、21个PNG...
1、替换了 wp_mail 函数,采用百度云消息来实现邮件的发送2、解决 WordPress 在 BAE 运行时的乱码问题3、自带一个BCS百度云存储插件,方便你上传管理文件4、支持Wordpress固定链接即Url重写伪静态5、中文版本的...
百度应用引擎BAE正式开放.docx
百度云bae wordpress sitemap 添加相关程序文件,请将附件中Sitemap.php app.conf 放在应用根目录下,更新即可生效。
BAE配置wordpress的配置文件样本。 详见http://blog.csdn.net/limb99/article/details/18842407
基于PHP的wordpress 百度BAE版.zip
基于PHP的wordpress百度BAE版源码.zip
wordpress for BAE 3.5.1
wordpress 3.7 for BAE
wordpress 3.8 for BAE
自从上次东子从BAE搬到cubic后,已经有半年多了,当时BAE刚起步,兼容性不怎么好...伪静态正常。BCS也没有问题,东子测试图片上传插入均正常。 安装后在后台插件启用BCS,填入你的“桶”名称。有什么问题欢迎留言反馈
百度BAE介绍、百度BAE介绍、百度BAE介绍、百度BAE介绍
百度贴吧签到BAE版 云签到 解放双手! 每天6分
可以运行在百度云服务器上 1、本示例是一个简单的ssh应用,对单表进行新增和查询操作; 2、使用ssh版本为struts2-core-2.3.1.2,spring-aop-3.0.5.RELEASE,hibernate-3.6.5.Final; 3、struts2的配置采用xml(目前不...
特别提示:本代码至少需百度应用引擎(BAE)中的百度云存储(BCS)支持 安装: config.php 填写BAE数据库名称 通过平台提供的phpMyAdmin访问 导入baefile.sql或使用install.php 不支持URL Rewrite请自行将no-...
百度开发上安装博客,此版为百度bae版!
WordPress BAE 3.6 梦月酱移植版 概述 整合了无XSL的Google Sitemap.这样谷歌网站管理员不会提示无法索引 整合了正常无措的百度网站地图.有利于SEO 整合了MP6插件美化后台 整合了多说评论插件,因为BAE评论始终有...
BAE概念&&原理 基本使用三步曲 高效在线调试 其他功能及服务 常见问题&&改进 BAE是什么 BAE是百度推出的网络应用
特别提示:本代码至少需百度应用引擎(BAE)中的百度云存储(BCS)支持 Licensed under the Apache License v2.0 http://www.apache.org/licenses/LICENSE-2.0 config.php 填写BAE数据库名称 通过平台提供的...