0

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

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

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

成为

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

如您所见,新的 URL 模式需要在 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

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

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

谢谢。

4

1 回答 1

0

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

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

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

于 2012-09-26T10:12:34.827 回答