在Apache服务器中,如果匹配特定的URL,我需要禁用keepalive
为此,我使用mod_rewrite进行设置,然后让脚本运行。
RewriteCond %{REQUEST_URI} ^/specific_url
RewriteRule ^ - [E=nokeepalive]
.......
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
现在我的问题是,如果nokeepalive
匹配
,它最终会被前缀/重命名为REDIRECT_;REDIRECT_">
我认为这是由于RewriteRule
,但如果我删除RewriteCond(这将使用任何URL全局禁用keepAlive
(,它就没有前缀
是否有方法防止使用RewriteCond进行此前缀
我不能使用SetEnvIf
,因为我使用mod_rewrite
,所以我必须使用RewriteRule
。
SetEnv/SetEnviF也无法工作,因为它们无法读取未使用SetEnv/SetEnviF分配的变量。我尝试使用SetEnvIf仅定义REDIRECT_nokeepalive是否存在(因为无论值如何,都必须定义nokeepalive(,但没有用。
我不能使用SetEnvIf,因为我使用mod_rewrite,所以我必须使用RewriteRule。
您可以将mod_setenvif与<If>
一起使用。
<If "%{REQUEST_URI} =~ /regextomatchurl/">
# or use <If "%{REQUEST_URI} == 'urlstring'">
SetEnv nokeepalive 1
</If>
您可以删除该重写规则。
或:
你可以添加这个,它可能工作,而不是测试:
SetEnv nokeepalive ${REDIRECT_nokeepalive}
编辑:
请记住在SetEnv
之前添加PassEnv REDIRECT_nokeepalive
,因为SetEnv
无法从mod_rewrite读取env变量。
只是要指出:
这里有两个空格,这可能会在其他重写规则中引起未来的问题:
RewriteRule ^ - [E=nokeepalive]
^^