Mod rewrite mod_rewrite:为什么apache URL编码%{HTTP_COOKIE}?
我正在尝试匹配cookie中的值。问题是,Apache对url值进行了编码。因此,如果我这样做:Mod rewrite mod_rewrite:为什么apache URL编码%{HTTP_COOKIE}?,mod-rewrite,cookies,Mod Rewrite,Cookies,我正在尝试匹配cookie中的值。问题是,Apache对url值进行了编码。因此,如果我这样做: RewriteCond %{HTTP_COOKIE} ^(.+)$ [NC] 它将捕获以下内容: session%3DeXnR1oDL1Reb8Z3Gdgk7Sg%26account%3D2%3B 与此相反: session=eXnR1oDL1Reb8Z3Gdgk7Sg&account=2 因此,无法获取账号来执行此操作: RewriteRule ^$ /accounts/%1/ [R
RewriteCond %{HTTP_COOKIE} ^(.+)$ [NC]
它将捕获以下内容:
session%3DeXnR1oDL1Reb8Z3Gdgk7Sg%26account%3D2%3B
与此相反:
session=eXnR1oDL1Reb8Z3Gdgk7Sg&account=2
因此,无法获取账号来执行此操作:
RewriteRule ^$ /accounts/%1/ [R=301,L]
请帮忙!我在谷歌和stackoverflow上到处找过,但没有人解决这个问题。非常感谢。我从来没有找到答案——但是,我确实找到了解决办法。对于那些有相同问题的人,这里是: 使用不会进行URL编码的字符分隔子cookie值。我用了破折号“-”。e、 g.“VAL1--VAL2”
祝你好运 你试过使用flag->NE | noescape吗 默认情况下,特殊字符(例如&和?)将转换为其等效的十六进制代码。使用[NE]标志可以防止这种情况发生 重写规则^/anchor/(.+)/bigpage.html#$1[NE,R] 上面的示例将/anchor/xyz重定向到/bigpage.html#xyz。省略[NE]将导致将#转换为其等效的十六进制代码%23,这将导致404 Not Found错误条件 资料来源: