在htaccess中使用Regex的Require语句



我有一个目录(path/to/directory/),其中有一个。htacces阻止访问使用Require valid-user要求身份验证。现在我的任务是允许访问子目录(path/to/director/foobar)和任何可能在该子目录。我知道如何通过将请求与文件路径相匹配来授予对特定文件的访问权限。但是,我不知道该结构在目录中的样子。

我想知道是否可以用正则表达式检查我的目录名称?所以我考虑

<RequireANY>
#Allow subdirectory
Require %{REQUEST_URI} ^(.*?(bfoobarb)[^$]*)$
#fallback
Require valid-user
</RequireANY>

正则表达式在https://regex101.com/中检查以匹配任何URI,其中包含foobar。遗憾的是,情况并非如此。由于我对。htaccess相当不熟悉,我是不是错过了什么重要的东西?提前感谢

您可以将此块用于<if>表达式:

<If "%{REQUEST_URI} =~ m#^/path/to/directory/(?!foobar/)#">
<RequireANY>
AuthType Basic
AuthName "Secret Area"
AuthUserFile /full/path/of/passwords/file
Require valid-user
</RequireANY>
</If>

负前向正则表达式模式^/path/to/directory/(?!foobar/)将匹配/path/to/directory/*,除非foobar/直接在其后面。

我发现这个解决方案正是我所需要的。我在Shopware 6https://docs.shopware.com/de/shopware-6-de/erste-schritte/shopware-6-installieren的安装指南中找到了它

AuthType Basic
AuthName "Please login."
AuthUserFile /path/to/.htpasswd
<RequireAny>
Require expr %{THE_REQUEST} =~ m#.*?s+/foobar.*?#
Require valid-user
</RequireAny>

相关内容

  • 没有找到相关文章

最新更新