为什么我的自定义RewriteMap程序没有返回预期的结果?

时间:2010-10-20 08:57:57

标签: apache mod-rewrite

我想将一些带有id = n的网址重定向到id = n + 1000(其中 n 是一个变量)。在互联网上搜索后,我发现我可以使用prg类型的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:

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

我希望这段代码(test.pl)能够返回相同的id,但它返回null。 有什么问题?

3 个答案:

答案 0 :(得分:0)

你拥有的东西很好,带有rewriteloglevel 5或更高版本的重写可能会显示其他一些重写或配置正在阻碍。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

确保在httpd配置中启用了重写引擎(在服务器或虚拟主机上下文中)

  

上的RewriteEngine