LocationMatch 否定表达式

LocationMatch negative expression

我想要网站的密码保护只是 webservice URL 允许所有。

这个表达式在 apache 中完美运行,只需要相反。

<LocationMatch "^(.*service).*$">
        AuthType Basic
        AuthName "Restricted Files"
        AuthUserFile /storage/www/xxxxx/.htpasswd
        Require valid-user
</LocationMatch>

我尝试了很多很多形式,但没有用。 我尝试了这个并且在调节器测试器中完美地工作而不是在 apache (2.2)

<LocationMatch "^(?!.*service).*$">

如何否定该表达式?

.htaccess 内容是否重要。

RewriteEngine on
RewriteBase /


# ....
RewriteRule     txxxx/(.*)        index.php?config=main_lite&r=script/xxx/deliverData&url=

# rule 1 -- let these requests pass through (S=1 skips the next rule)
RewriteCond %{REQUEST_FILENAME} favicon.(gif|ico) [NC,OR]
RewriteCond %{REQUEST_FILENAME} .+\.(pdf|js|css|txt|jpg|jpeg|gif|png|bmp|ico|swf|html|log|svg|ttf|eot|woff|woff2)$ [OR]
RewriteCond %{REQUEST_URI} rsc/ [OR]
RewriteCond %{REQUEST_URI} index.php$
RewriteRule (.*) - [S=1]

# rule 2 - pass every request to index.php
RewriteRule .* index.php

Apache regexp 支持似乎太有限了..

但是,您可以轻松地 "negate" 您的表达式,方法是在封闭子句中定义您想要的所有内容(例如,"Location"),然后恢复到您的 'default' 设置(非否定)LocationMatch。

像这样:https://serverfault.com/questions/591591/apache-locationmatch-regex-behaviour-does-not-seem-correct