我遇到过一种对我来说很奇怪的情况。在第一次使用后,构建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测试网站,它确认第二个反向引用变量根本没有被评估。我肯定在这里遗漏了一些东西,因为这应该是一个简单的规则。
对此的任何帮助将不胜感激。
感谢。
答案 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]
我还转发了文件扩展名前缀