首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apache在无限循环中运行,请求URI太长

Apache在无限循环中运行,请求URI太长
EN

Stack Overflow用户
提问于 2012-09-11 14:08:49
回答 2查看 765关注 0票数 3

我希望从cookie中读取值,并将该值作为查询字符串传递,为此,我使用了以下规则

代码语言:javascript
运行
复制
**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会被一些垃圾值替换

代码语言:javascript
运行
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* 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"
*/
EN

回答 2

Stack Overflow用户

发布于 2012-09-11 14:13:39

你只需要给出一个条件,然后对Cookie进行必要的重写。

先删除" without -cookie“Rewrite.PUT with Redirect条件,再去掉Redirect with with条件。

代码语言:javascript
运行
复制
 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]"**
票数 0
EN

Stack Overflow用户

发布于 2012-09-11 14:56:19

如果规则和代理目标位于同一主机上,则每次都将应用这些规则。例如:

  1. 传入请求,应用规则
  2. No preferenceLocale cookie,追加查询字符串
  3. URL is sent to mod_proxy to be cookie从步骤1开始创建cookie。

这就是查询字符串不断重复的原因,请注意,在倒数第二个实例之后,ybdomain=参数如何从test100.fwqae148.yelladworks.in变为192.168.132.148 (您要代理的IP )。这种情况会继续发生,因为cookie preferenceLocale或其缺失会传递给每个代理请求,因此对cookie的检查将始终为真。

您需要添加一些条件来检查查询字符串,这样它就不会再次代理请求:

代码语言:javascript
运行
复制
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]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12363675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档