gpt4 book ai didi

regex - 除特定 URI 外的所有位置的 Apache 配置

转载 作者:行者123 更新时间:2023-12-01 10:33:09 25 4
gpt4 key购买 nike

我需要为位置指令应用一些配置。

这些配置必须适用于所有位置,除了一些 URIs (例如,我不想更改 /products 的配置,因此必须对所有位置应用波纹管配置,除了 /products )

<Location />
# desired configurations
</Location>

最佳答案

这可以通过多种方式完成:
1. 使用 正则表达式
在位置指令中使用正则表达式匹配所有 URI,除了您的模式
例如。:

<Location ~ "^((?!/product).)*$">
# desired configurations
</Location>

2. 使用 指令
例如:使用 If在您的目录中:
<If "%{Request_URI} != '.*/product.*'">
或者
<If "%{Request_URI} != '^((?!/product).)*$'">

3. 通过设置变量并使用 If 和 IfDefine
在配置开始时设置一个变量,然后使用指令
SetEnvIf Request_URI ".*/product.*" isProd=1
...
<IfDefine isProd>
...
或者您可以在 If 指令中使用 expr 来比较字符串和变量。
4. 使用另一个 <Location>可以更改较早的 <Location>部分通过覆盖它之后。例如,这将对除 /.well-known/ 之外的所有内容强制执行身份验证。 ,一种从 Let's Encrypt 获取 TLS 证书的常见模式:
        <Location />
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/htpasswd
Require valid-user
</Location>
<Location /.well-known/>
Require all granted
</Location>
这将要求用户在所有 /* 中输入密码。除了 /.well-known/*这不需要密码。
upstream documentation on configuration sections有关这方面的更多信息。

Useful link

关于regex - 除特定 URI 外的所有位置的 Apache 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37131926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com