Apache mod_rewrite[E]使用RewriteCond重定向前缀



在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]
^^

相关内容

  • 没有找到相关文章

最新更新