2012-09-26 25 views
0

我遇到了一種對我來說似乎很奇怪的情況。看起來,構建Apache重寫規則時的反向引用變量會在第一次使用後丟失。第一次使用後無法訪問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 

我用this試驗場,並確認第二個反向引用變量沒有被評估的。我確定在這裏錯過了一些東西,因爲它應該是一個簡單的規則。

任何幫助,將不勝感激。

謝謝。

+0

您的規則正常工作對我來說,在Apache 2.2 .22 –

+0

是的,它現在似乎工作.....我一定是做錯了,因爲它不是第一次工作... – mackelkin

回答

0

奇怪的是,我工作在重寫測試,如果你有2套括號包圍:

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

我也逃過了文件擴展名前綴

+0

似乎重寫測試人員有某種錯誤。我會看看是否可以提醒開發人員查看可能存在的問題。 – mackelkin