2011-10-24 48 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结尾”? –

相关问题