首次使用后无法访问Apache重写后向引用变量

时间:2012-09-26 09:02:35

标签: apache mod-rewrite

我遇到过一种对我来说很奇怪的情况。在第一次使用后,构建apache重写规则时似乎会出现反向引用变量。

我的要求是更改旧的URL模式以符合新的路径模式,例如:

www.example.com/documents/newsletter/newsletter-issue-50.htm

成为

www.example.com/sites/default/newsletter/50/English/newsletter-issue-50.htm

如您所见,新的网址格式需要在2个地方指定问题编号。

我的重写规则如下:

RewriteRule ^documents/newsletter/newsletter-issue-(.*).htm$ http://www.example.com/sites/default/newsletter/$1/English/newsletter-issue-$1.htm [R=301,L]

当我使用此规则时,我仍然得到404,因为结果URL错过了用问题编号替换第二个“$ 1”,在本例中为“50”。我得到的是

http://www.example.com/sites/default/newsletter/50/English/newsletter-issue-.htm

我使用了this测试网站,它确认第二个反向引用变量根本没有被评估。我肯定在这里遗漏了一些东西,因为这应该是一个简单的规则。

对此的任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

奇怪的是,如果你用2套括号括起来,我会在重写测试中工作:

RewriteRule ^documents/newsletter/newsletter-issue-((.*))[.]htm$ http://www.example.com/sites/default/newsletter/$1/English/newsletter-issue-$1.htm [R=301,L]

我还转发了文件扩展名前缀