我想将一些带有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。 有什么问题?
答案 0 :(得分:0)
你拥有的东西很好,带有rewriteloglevel 5或更高版本的重写可能会显示其他一些重写或配置正在阻碍。
答案 1 :(得分:0)
因为我只是花了一天的时间来对付同样的问题。您很可能在未定义的上下文中使用地图。
在我的情况下,我在我的测试网址中使用https,当我切换到使用http时,一切都开始工作了。回想起来,考虑到我设置配置文件的方式,这应该是完全明显的。
答案 2 :(得分:0)
确保在httpd配置中启用了重写引擎(在服务器或虚拟主机上下文中)
上的RewriteEngine