如果特定页面请求包含特定推荐人,是否可以通过Apache删除特定Cookie ?
我发现了一个类似的问题,一般是删除cookie(How to remove a cookie in Apache),但这不会使用任何条件或cookie名称。
我的具体用例是:如果请求的网址是“/ choose-language”,则删除(或取消设置它的值)名为“country”的cookie,并且referrer是“www.external.domain”。
目前可以使用以下Apache模块:
core mod_so mod_watchdog http_core mod_log_config mod_logio
mod_version mod_unixd mod_access_compat mod_alias mod_auth_basic
mod_authn_core mod_authn_file mod_authz_core mod_authz_host
mod_authz_user mod_autoindex mod_deflate mod_dir mod_env mod_expires
mod_filter mod_headers mod_mime prefork mod_negotiation mod_php7
mod_proxy mod_proxy_fcgi mod_remoteip mod_rewrite mod_setenvif
mod_socache_shmcb mod_ssl mod_status
答案 0 :(得分:3)
如下所示:
RewriteEngine On
RewriteCond %{HTTP_REFERER} "^www\.external\.domain$"
RewriteRule "/choose-language" - [E=SetCookie:1]
Header set Set-Cookie cookieName= ENV=SetCookie
使用mod_rewrite
设置环境变量,然后将其与mod_headers
一起使用以修改相关标头。
此示例发送Set-Cookie
标头以将cookieName
设置为空值。我不知道您的上游应用程序正在做什么,所以这可能不是正确的配置,但使用Header unset
或Header merge
代替Header set
应该会产生正确的结果。更多信息here。
最重要的部分是使用RewriteCond
和RewriteRule
指令来设置环境变量SetCookie
。一旦你有了这个,就应该直截了当地找出删除或覆盖cookie的正确答案。
答案 1 :(得分:3)
您加载的模块意味着Apache 2.4可以访问<If>
和Header
上的条件表达式
<If "%{HTTP_REFERER} =~ /www.external.domain/ && %{REQUEST_URI} == '/choose-language'">
Header add Set-Cookie country=
</If>
或
Header add Set-Cookie country= "expr=%{HTTP_REFERER} =~ /www.external.domain/ && %{REQUEST_URI} == '/choose-language'"