如何设置 Apache 有条件地标头

[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)的跨域访问,然后将以下行添加到 上下文或 .htaccess 文件。

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]

Related Posts