2012-11-14 23 views
0

的目標是使重定向從的RewriteCond不匹配,而從字面上應該

/Swiss+Military/something.. 

/Swiss+Military+Hanowa/something.. 

我已經試過:

RewriteCond %{REQUEST_URI} /Swiss+Military/(.*) 
RewriteRule .* /Swiss+Military+Hanowa/%1 [R=301,L] 

改寫記錄在級別9顯示以下內容:

RewriteCond: input='/Swiss+Military/' pattern='/Swiss+Military/(.*)' => not-matched 

我不明白爲什麼它不匹配.. 任何想法?

解決 - 需要逃避+標誌的圖案(怎麼沒有我提醒我自己)

編輯 沒有爲這種情況下更好的解決方案(這我沒有放一開始,因爲它沒有工作 - 的同樣的原因張貼的一) - 只是一個單一的重寫規則:

RewriteRule /Swiss\+Military/ /Swiss+Military+Hanowa/ [R=301,L] 

回答

0

的RewriteCond使用Perl語法的模式。這意味着模式中的「+」意味着「匹配1或更多」(前一個字符)。嘗試通過在其前面放置一個斜槓來避開模式中的'+':'\ +'。

+0

該死的......像蘋果派一樣容易。 我進入PCRE很長時間了,並沒有認識到我有特殊字符作爲文字。 謝謝,** msdin **! – 1234ru

相關問題