2010-11-21 55 views
0

我想匹配cookie中的值。问题是,Apache使url的编码值。所以,如果我这样做:mod_rewrite:为什么apache的URL编码%{HTTP_COOKIE}?

RewriteCond %{HTTP_COOKIE} ^(.+)$ [NC] 

它将捕获此:

session%3DeXnR1oDL1Reb8Z3Gdgk7Sg%26account%3D2%3B 

,而不是这样的:

session=eXnR1oDL1Reb8Z3Gdgk7Sg&account=2 

那么有没有办法让账号要做到这一点:

RewriteRule ^$ /accounts/%1/ [R=301,L] 

请帮忙!我在Google和stackoverflow上到处寻找,并且没有人解决这个问题。非常感谢。

回答

0

我从来没有找到答案 - 但是,我找到了解决办法。对于那些有同样问题的人,这里是:

使用不会获得URL编码的字符分隔您的子cookie值。我用破折号字符“ - ”。例如“VAL1 - VAL2”。

祝你好运!

0

你试过用flag - > NE | noescape吗?

默认情况下,特殊字符(例如&和?)将被转换为等效的十六进制码。使用[NE]标志可防止发生。

重写规则^ /锚/(.+)/bigpage.html#$1 [NE,R]

上面的例子将重定向/锚/ XYZ到/bigpage.html#xyz。省略[NE]将导致#被转换为其十六进制等效值%23,这将导致404 Not Found错误条件。

来源:http://httpd.apache.org/docs/2.3/rewrite/flags.html