我想从 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]"**
这些规则单独工作正常,但如果同时放置这两个规则,它会失败并显示错误 Request UIR is too long,
如果我们看到日志 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"
最佳答案
你只需要给出一个条件,然后对 Cookie 进行必要的重写。
删除“without-cookie”重写的条件。先放置有条件的重定向,而不是无条件的重定向。
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]"**
关于Apache 在无限循环中运行,请求 URI 太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12363675/