如何在 mod_substitute 中使用 Env?

如何在 mod_substitute 中使用 Env?

好吧,我对 htaccess 不是很在行。我有一个代码:

SetEnvIf GEOIP_COUNTRY_CODE US LinkC example1
AddOutputFilterByType SUBSTITUTE text/html
Substitute s/example2/env=LinkC/ni

我正在尝试替换页面中的具体内容。所有文本都被替换为 env=LinkC,而不是应有的 example1。有什么帮助吗?

答案1

你可以做的是结合 代替服务器端包括。下面是我使用的具体代码块

<Location "/css">
    # This specifies the filter sequence
    AddOutputFilterByType SUBSTITUTE;INCLUDES text/css

    # This specifies that SSI should be allowed.
    Options Includes


    ProxyPass "https://fonts.googleapis.com/css"
    # This converts the string I want and replaces them with SSI directives
    Substitute 's|https://fonts.gstatic.com/s/|<!--#echo var="REQUEST_SCHEME" -->://<!--#echo var="HTTP_HOST" -->/s/|'
</Location>

为了帮助弄清楚你有哪些可用的变量,你可以暂时这样做

Substitute 's|https://fonts.gstatic.com/s/|<!--#printenv -->/s/|'

我用过这个我的 Google 字体代理图片 [来源]

答案2

mod_substitute 不会这样做。替换字符串是静态的,或者是对搜索字符串正则表达式的反向引用,而不是特定于请求的。

看一下服务器端包含的功能:

https://httpd.apache.org/docs/current/howto/ssi.html

利用此功能的页面可以是简单的模板,可以具有基于请求的替换并包含一些简单的条件逻辑。

相关内容