我希望从cookie中读取值,并将该值作为查询字符串传递,为此,我使用了以下规则
**1 : "RewriteCond %{HTTP_COOKIE} !^preferenceLocale=([^;]+) [NC]
RewriteRule ^/*(.*) http://192.168.132.148/cs/Satellite?pagename=YBWrapper&ybdomain=%{HTTP_HOST}&ybpage=$1&%{QUERY_STRING} [P]"**
if cookie value is available then i need to execute fallowing set of condition and rule,
**2 :"RewriteCond %{HTTP_COOKIE} preferenceLocale=([^;]+) [NC]
RewriteRule ^/*(.*) http://192.168.132.148/cs/Satellite?pagename=YBWrapper&ybdomain=%{HTTP_HOST}&ybpage=$1&preferred_locale=%1&%{QUERY_STRING} [P]"**
这些规则单独工作得很好,但是如果将两个规则都放在一起失败,并显示错误请求UIR太长,
如果我们看到日志,HTTP_HOST会被一些垃圾值替换
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
* 192.168.132.148 - - [11/Sep/2012:11:23:15 +0530] "GET /cs/Satellite?pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=192.168.132.148&ybpage=cs/Satellite&preferred_locale=1302157366636&pagename=YBWrapper&ybdomain=test100.fwqae148.yelladworks.in&ybpage= HTTP/1.1" 414 345 "http://test100.fwqae148.yelladworks.in/" "Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0.1"
*/
发布于 2012-09-11 14:13:39
你只需要给出一个条件,然后对Cookie进行必要的重写。
先删除" without -cookie“Rewrite.PUT with Redirect条件,再去掉Redirect with with条件。
if cookie value is available then i need to execute fallowing set of condition and rule,
**2 :"RewriteCond %{HTTP_COOKIE} preferenceLocale=([^;]+) [NC]
RewriteRule ^/*(.*) http://192.168.132.148/cs/Satellite?pagename=YBWrapper&ybdomain=%{HTTP_HOST}&ybpage=$1&preferred_locale=%1&%{QUERY_STRING} [P]"**\
RewriteRule ^/*(.*) http://192.168.132.148/cs/Satellite?pagename=YBWrapper&ybdomain=% {HTTP_HOST}&ybpage=$1&%{QUERY_STRING} [P]"**
发布于 2012-09-11 14:56:19
如果规则和代理目标位于同一主机上,则每次都将应用这些规则。例如:
preferenceLocale
cookie,追加查询字符串这就是查询字符串不断重复的原因,请注意,在倒数第二个实例之后,ybdomain=
参数如何从test100.fwqae148.yelladworks.in
变为192.168.132.148
(您要代理的IP )。这种情况会继续发生,因为cookie preferenceLocale
或其缺失会传递给每个代理请求,因此对cookie的检查将始终为真。
您需要添加一些条件来检查查询字符串,这样它就不会再次代理请求:
RewriteCond %{HTTP_COOKIE} !preferenceLocale=([^;]+) [NC]
RewriteCond %{QUERY_STRING} !pagename=YBWrapper
RewriteRule ^/*(.*) http://192.168.132.148/cs/Satellite?pagename=YBWrapper&ybdomain=%{HTTP_HOST}&ybpage=$1&%{QUERY_STRING} [P]
RewriteCond %{HTTP_COOKIE} preferenceLocale=([^;]+) [NC]
RewriteCond %{QUERY_STRING} !pagename=YBWrapper
RewriteRule ^/*(.*) http://192.168.132.148/cs/Satellite?pagename=YBWrapper&ybdomain=%{HTTP_HOST}&ybpage=$1&preferred_locale=%1&%{QUERY_STRING} [P]
https://stackoverflow.com/questions/12363675
复制相似问题