perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fayland Lam <fayl...@gmail.com>
Subject org stuff
Date Fri, 12 May 2006 07:45:03 GMT
let me explain in Chinese, :)

in the org.conf
--------------------------------
	<Perl>
	use lib qw(/var/org);
	</Perl>

     PerlModule Zorpia::RewriteOrg
     PerlTransHandler Zorpia::RewriteOrg
--------------------------------

The PerlTransHandler 能把 url 转变为另一个 url, 比如我们就是将类如
http://org.zorpia.com/0/1584/10141597.0f8688.jpg
这样的 url 转变为
http://org.zorpia.com/org62/0/1584/10141597.0f8688.jpg

这里因为要访问数据库,所以用 mod_rewrite 是不行的。只能依靠 modperl
而 modperl 只是跟 Apache 打交道,不能将这个地址访问到另外服务器上的文

件。(也就是访问不到 org62 这个服务器)。当然它可以发送一个 header:

Location 转到 org62, 但是这样子地址栏是会变到 org62 。

怎么样才能在这个 apache 里访问 org62 服务器上的东西。那只能依靠 mod_proxy
--------------------------------
     RewriteEngine On
     RewriteLog /var/log/httpd/rewrite_log
     RewriteLogLevel 3
     RewriteRule ^/org(\d+)/(.*) http://org$1.zorpia.com/$2 [proxy,last]
--------------------------------
这样我们就可以将 http://org.zorpia.com/org62/0/1584/10141597.0f8688.jpg 
用 proxy 访问 http://org62.zorpia.com/0/1584/10141597.0f8688.jpg
对于用户来说这是不可见的。

That's ALL.

而 PerlTransHandler Zorpia::RewriteOrg 也很简单。
--------------------------------
if ($r->uri =~ m|/(\d+)/(\d+)/([\w\.]+)\.jpg$|) {
         my $org = &get_org_from_photo_id($1, $2);
         $r->uri("/org$org/$1/$2/$3\.jpg");
     }
--------------------------------
将访问的 url 转一下。老板你看看就明白了。

另外我想说的是,目前我用的是 Apache2 和 modperl2, 因为 alpha.zorpia 这台

机子用的是这两个版本的。如果要转到 apache 1.3 和 modperl1 也是很容易的。
还有就是 log 问题。如果到最后发布的时候不需要 log(这样能稍微节省一点点

资源),就把 conf 里的 RewriteLog 和 RewriteLogLevel 注释掉。还有 
RewriteOrg.pm 与 Apache2::Log 相关的内容。
另外还有个是 RewriteOrg.pm 目前是直接用 DBI 连接的。如果有可能我们可以迁

移到 Apache::DBI.

Thanks. 如果有问题就问我。:) 我拿着工资的。呵呵。

Mime
View raw message