注册
登录
论坛
搜索
技术之家
技术博客
社区设施
积分商城
ITPUB
帮助
导航
私人消息 (0)
公共消息 (0)
论坛任务 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
IXPUB技术社区
»
服务器架设与应用
» 用Apache镜像Wordpress站
返回列表
发帖
sun029
发短消息
加为好友
sun029
(丐帮西安分舵主)
当前离线
UID
8400463
帖子
4616
精华
7
积分
7949
阅读权限
150
来自
『丐帮』
在线时间
712 小时
注册时间
2006-12-6
最后登录
2010-7-15
版主
帖子
4616
主题
651
积分
7949
阅读权限
150
来自
『丐帮』
注册时间
2006-12-6
论坛徽章 61
楼主
跳转到
»
倒序看帖
打印
字体大小:
t
T
发表于 2007-9-11 14:25
|
只看该作者
用Apache镜像Wordpress站
Apache
,
Wordpress
,
镜像
想给自己的Blog做一个国内的镜像站点,类似于xys.3322.org镜像
www.xys.org
。据我观察,新雨丝镜像使用的是Apache服务器[1]的Proxy Throughput功能[2],xys.3322.org并不实际存放任何数据,而是作为一个跳板,或者叫反向代理(Reverse Proxy)[3][4],代理那些不能访问新雨丝主站的用户访问主站内容。这种镜像站点具有“实时跟新”的特点,而也省去了同步网站的复杂的技术操作。
由于我的Blog架设在国外,所以自然而然想到做一个国内镜像。一般的镜像没有“实时更新”的特点,同步网站的操作也需要我每次把同一篇文章发在两个Blog上。更加复杂的是每个wordpress的配置都需要做两遍。最不能容忍的是没法同步Comments。如果能用Apache直接动态实时镜像网站内容就最好了。
下面的配置都是在镜像网站dipplum.org上完成的。
首先配置Apache模块,需要enable rewrite和proxy模块
a2enmod rewrite proxy
然后清空原dipplum.org网站的主文件目录所有内容(如果有的话),可以考虑给原来的目录改名,然后新建一个主目录。编辑该目录下的.htaccess文件,内容如下
RewriteEngine on
RewriteRule ^(.*)$
http://dipplum.com/
$1 [P]
Apache的配置就结束了。这时访问镜像站点会发现,首页内容虽然镜像过来了,但是首页中所有文件的链接都指向主站,而不是镜像站点。这就失去了镜像的意义,用户只有在访问首面时才能使用镜像,其他地方访问的都是主站。
这是因为wordpress引擎生成链接URL的时候,都会自动将Blog的站点URL加为前缀。而Apache的rewrite模块只代理HTTP请求消息,而把回复的HTML报文原封不动转发给请求方。如果可以让wordpress生成本站的链接使用Relative URL而不是Absolute URL,这个问题自动就解决了。
翻阅wordpress项目网站[5],发现和我有类似需求[6][7]的人很多(也就是mirror站点、站点迁移、一站多域名这样的需求),但是问题都不能解决,想来是wordpress官方根本不支持用Relative URL。
最后在一个wordpress用户网站上找到了解决方案[8]。这需要修改wordpress主站的配置文件,在用户模板的Header文件中,DOCTYPE声明前,加上下面这段内容:
<?php
function relative_links($str) {
$url = ‘
http://dipplum.com
’;
$str = str_replace(”‘” . $url .”/”, “‘/”, $str);
$str = str_replace(’”‘ . $url . ‘/’, ‘”/’, $str);
$str = str_replace(’”‘ . $url . ‘”‘, ‘”/”‘, $str);
$str = str_replace(”‘” . $url . “‘”, “‘/’”, $str);
return $str;
}
ob_start(’relative_links’);
?>
上面这段脚本会自动运行,把生成页面中所有包含
http://dipplum.com
的绝对路径修改成相对路径。
这时再访问镜像站点,就会发现所有的本站链接,都在浏览器中正确指向镜像站点了。
参考
http://httpd.apache.org/
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass
http://httpd.apache.org/docs/2.2 ... guide_advanced.html
http://wordpress.org/support/
http://wordpress.org/tags/relative
http://wordpress.org/tags/uri
http://mathiasbynens.be/archive/2005/02/relative-links
收藏
分享
Solaris
UltraSPARC
StorgeTEK
JAVA
我的MSN:xasun_029@hotmail.com
我的Blog:
http://sun029.blog.ixpub.net
返回列表
IBM产品及AIX
存储设备与容灾技术
华为产品与技术
站务管理
Linux与开源世界
攻防大奖赛专区
IT生活
Solaris网络服务与开源软件应用
Sun产品及Solaris
程序设计
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]
社区排名
社区徽章
云计算有奖调查送100X币
参加2010系统架构师大会送500X币
欢迎加入
IXPUB官方微博
IXPUB站长微博