2011-10-24 51 views
1

我試圖制定一個正則表達式,以便與httpd.conf中的Apache web服務器配置的「Location」指令一起使用文件。以「/ start /」開頭但不以「end1」或「end2」結尾的正則表達式

<Location ~ "/start/.*(?!end1|end2)$"> 
    Order Deny,Allow 
    Deny from all 
    Allow from foo.com 
</Location> 

但是,我得到了Apache日誌文件中的以下錯誤:

Syntax error on line 1179 of c:/apache/apache/conf/httpd.conf: 
Regex could not be compiled 

我知道錯誤可能是 「負前瞻」 一節中:(?!END1 | END2),但可以沒有確切地計算出來。 感謝

+0

哪個Apache的版本號是您使用?正則表達式語法在1.x和2.x之間發生了顯着變化 –

+0

這是來自Oracle應用服務器10g的Apache,應該基於Apache 1.3。 –

+0

即使是向前看,表達式:'/ start /.*(?! end1 | end2)$'將不起作用。爲了確保位置以'/ start /'開始,並且不以'end1'或'end2'結尾,這裏有一個表達式:'^/start /(?!.* end [12] $)' – ridgerunner

回答

0

正向一般斜槓需要進行轉義:

"\/start\/.*(?!end1|end2)$" 
+0

^\/start \ /.*(?! end1 | end2)$如果它需要以/ start/ – Leon

+0

開頭,它抱怨的是一樣的。 「/」可能不是問題,因爲我有另一個更簡單的正則表達式使用「/」,但工作正常。 –

1

的Apache 1.x的使用POSIX擴展正則表達式,並用這些表達式

環視不支持

所以,你的問題就在這裏:(?!end1|end2)

+0

他正在尋找「**不會**以」end1「或」end2「結尾的字符串# –

+0

@FrankFarmer對不起,誤了。 – FailedDev

+0

感謝您的提示。我將對POSIX Extended Regular Expressions進行一些研究。但是,如果你知道你的頭頂是什麼,有沒有辦法在POSIX Extended Regular Expressions中表達「不以end1或end2結尾」? –

相關問題