Apache LocationMatch除了Shibboleth.sso之外的所有内容

时间:2016-12-07 09:37:50

标签: regex apache

我希望Apache匹配所有位置,/Shibolleth.sso/*除外 我已经完成了我想要的regEx:/^\/(?!Shibboleth\.sso)(.*)/可以在这里测试https://regex101.com/

不幸的是,Apache 2.4.10具有不同的RegEx支持。否定lookehead工作,但除/以外的所有内容都被排除在外。 /Search/Results返回400错误请求。

Apache 2.4不需要转义/,所以我当前的LocationMatch是

<LocationMatch "^/(?!Shibboleth\.sso)(.*)">

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

虽然可以使用它,但很难理解否定的前瞻正则表达式。您还从否定的前瞻正则表达式中删除了“ /”,从而使它的语义略有不同...

在这种情况下,我认为使用 If 指令和Apache内部变量之一要容易得多。除了正则表达式更简单之外,如果需要,可以使用它来匹配更复杂的条件。参见Expressions in Apache HTTP Server

<If "%{REQUEST_URI} !~ m#^/Shibolleth.sso/#">
</If>