好吧,我对 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
利用此功能的页面可以是简单的模板,可以具有基于请求的替换并包含一些简单的条件逻辑。