[ad_1]
Apache 允许您为您的网站动态设置请求头环境变量,以及有条件地修改响应头。 设置方法如下 Apache 头有条件地使用 SetEnvIf 指令和 IF Else 条件。
如何设置 Apache 有条件地标头
下面是设置步骤 Apache 有条件地为您的网站标头。 动态设置请求头环境变量的三种方式 Apache. 我们将研究它们中的每一个。
使用 SetEnvIf (Apache
这是 SetEnvIf 的语法
SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]]
SetEnvIf 基本上将每个请求的属性值与指定的正则表达式匹配,并设置匹配请求的请求头环境变量。 在上面的语句中,一个属性可以是:
- HTTP 请求头,如 Host、User-agent 等
- 服务器变量,如 Remote_Host、Remote_Addr 等
- 上游定义的环境变量
奖励阅读:如何找到 Apache Linux 中的版本
假设您想动态地允许来自特定 IP(例如 245.103.193.53)的跨域访问,然后将以下行添加到
SetEnvIf Remote_Addr 245.103.193.53 cors Header Set Access-Control-Allow-Origin "https://www.yoursite.com" env=cors
在上面的语句中,SetEnvIf 检查 Remote_addr 请求属性,如果它与指定的 IP 匹配,则将请求头环境变量设置为 cors。 然后 header 指令设置那些环境变量为 cors 的请求的标头。
奖励阅读:如何在中启用 mod_headers Apache 在 Ubuntu 中
同样,如果要设置条件 Apache 基于请求的 URL 的标头(例如 /product/ )您可以使用 REQUEST_URI 属性
SetEnvIf Request_URI "/product/" cors Header Set Access-Control-Allow-Origin "https://www.yoursite.com" env=cor
使用 IF 其他 (Apache >=2.2)
你也可以设置 Apache 头有条件地使用 IF..Else 指令和 Apache 表达. 这是上面使用的示例 Apache 表达
<If "%{REMOTE_ADDR} == '245.103.193.53'"> Header Set Access-Control-Allow-Origin "https://www.yoursite.com" env=cors </If>
奖励阅读:如何升级 Apache CentOS、Redhat Linux 中的版本
同样,如果您想根据请求的 url(例如 /product/)设置标题,您可以使用 QUERY_STRING 变量。
<If "%{QUERY_STRING} =~ /product/">
Header Set Access-Control-Allow-Origin "https://www.yoursite.com" env=cors
</If>
就像 SetEnvIf 一样,您可以将此 If-else 条件放在服务器的位置或目录指令或 .htaccess 文件中。
使用重写规则
您还可以使用 RewriteRule 来动态匹配请求和设置标头。
RewriteRule ^/product/$ - [ENV=cors:true]
Header set "Access-Control-Allow-Origin" "*" env=cors
在上面的代码中,RewriteRule 将匹配所有以 /product/ 开头的 URL,并将它们的环境变量设置为 cors。 然后 Apache 将设置请求头环境变量设置为 cors 的所有请求的 Access-Control-Allow-Origin 头。
您可以将以上几行放在服务器的位置或目录指令或 .htaccess 文件中。 但是,您需要启用 Apache mod_rewrite 模块使用重写规则。
就是这样! 现在您可以动态设置 Apache 有条件地为您的网站和应用程序设置标题。
CodePre 可以在几分钟内轻松可视化数据,并在实时仪表板中进行监控。 今天就试试吧!
[ad_2]