2010-10-20 81 views
1

我想重定向一些网址id = nid = n + 1000(其中n是一个变量)。在互联网上搜索后,我发现我可以使用prg类型的RewriteMap指令来做到这一点。为什么我的自定义RewriteMap程序不能返回预期的结果?

但是,我遇到了一些麻烦让它工作。下面包含了我使用自定义RewriteMap进行测试的代码。

这是我使用的地图程序我的test.pl文件:

#!/usr/bin/perl 
$| = 1; # Turn off buffering 
while (<STDIN>) { 
    print $_; 
} 

我已经在我的virtualhost.conf文件中定义的RewriteMap指令:

RewriteMap prp prg:/var/www/mydomain1.com/test.pl 

这在这里我用我的自定义地图的重写规则:

RewriteRule ^Pro-id-([0-9]+).html http://mydomain2.um.ac.ir/papers-${prp:$1}.html [L,R=301] 

我希望这个代码是什么(test.pl)做的是返回相同的id,但它返回null。 问题是什么?

+0

当然,使用一种语言的人可以回答你的问题几乎不知道你为什么不... – 2010-10-20 11:30:12

+0

感谢编辑。我很努力。 – 2010-10-23 05:42:40

回答

0

你拥有的东西还不错,rewriteloglevel 5或更高版本的rewritelog可能会揭示其他一些重写或配置正在成为现实。

0

因为我只是花了一天的时间来对付同样的问题。很可能你在没有定义的上下文中使用地图。

在我的情况下,我在我的测试网址中使用了https,而当我切换到使用http时,一切都开始工作。回想起来,考虑到我设置配置文件的方式,这应该是完全明显的。

0

确保您已在您的httpd配置启用重写引擎(在任一服务器或虚拟主机的上下文)

RewriteEngine叙述上