2013-07-26 22 views
3

是否可以在RewriteRule 模式中使用反向引用mod_rewrite RewriteRule反向引用在模式中使用

我想象這是這樣的:

RewriteRule ^(.)([a-z]*)$1([a-z]*) $2-$3 
         ^
    (note, this fellow, here, refers to that first "(.)") 

如果接收到的網址是XboopXdoop,結果當然會是boop-doop

我試圖用這個來指定一個分隔符,它可以用來解析字符串的其餘部分,而不強制使用特定字符作爲分隔符,這樣就可以在傳入url的開始處指定一個分隔符。

謝謝。

回答

2

$1適用於右側(重寫),但不適用於正則表達式。您需要使用\1

嘗試:

RewriteRule ^(.)([a-z]+)\1([a-z]+) $2-$3 

我遇到了一個奇怪的邊緣情況與*它拆分基於字符串的第二個字符,而不是第二。 XtestingXtest導致es-ing ...所以是的,不知道那裏發生了什麼。如果我使用+它工作正常。

而且,由於*+是貪婪的,如果你有多個分隔符,它會分裂的字符最後一次出現:

XbaseXtest -> base-test 
XbaseXteXst -> baseXte-st 
XbaseXtestX -> baseXtest- 
+0

真棒!正是我在找什麼。非常感謝你!有一個網站會在外部腳本源中包含查詢字符串,因此提供'.../_ X_pageXfield = val',其中'^ _(。)(。*)\ 1(。*)$'爲這個模式和'$ 2?$ 3'的結果,設法解決了這個問題。 – ca2longoria