Questions tagged «querystring»

1
Apache mod_rewrite在重定向时对查询字符串进行双重编码
在通过查询字符串传递时,Apache mod_rewrite的行为遇到了一个奇怪的问题(也许是错误?)。 为了进行复制,我们使用默认的Apache配置设置了一个全新的Ubuntu(oneiric)安装。我们启用了mod_rewrite,并且在默认站点配置中,添加了以下内容: RewriteEngine on RewriteRule ^/(.*)$ /r/$1 [R] 为了测试,我们使用curl: curl -I 'http://[ubuntu-machine]/a/b%20c?a%20b' 相关输出为: HTTP/1.1 302 Found Server: Apache/2.2.20 (Ubuntu) Location: http://[ubuntu-machine]/r/a/b%20c?a%2520b 如您所见,查询字符串是两次转义的,这是错误的。有谁知道我们如何解决这个问题?我们尝试了几件事: 添加[NE]。这为我们提供了正确的查询字符串,但是路径未转义,从而导致新的问题。 添加[NE,B]。这似乎是工作,但引起/的之间a并b路径部分转义。 手动取消转义查询字符串。 RewriteCond %{QUERY_STRING} .* RewriteMap unescape int:unescape RewriteRule ^(.*)$ $1?${unescape:%{QUERY_STRING}} 但是,这意味着我们无法区分查询字符串中的“ an” &和“转义&”。 更新: 此错误报告描述了相同的问题。第一条评论与一个显然可以解决该问题的提交有关,但是正如Pieter在下面说的那样,它似乎并没有得到真正的解决。

4
参数长度> 255的重写URL不起作用
我正在使用mod_rewrite重写这样的URL: http://example.com/1,2,3,4/foo/ 通过在.htaccess中执行以下操作: RewriteEngine On RewriteRule ^([\d,]+)/foo/$ /foo.php?id=$1 [L,QSA] 它可以正常工作,但当“ 1、2、3、4”变成一个长度超过255个字符的字符串时,Apache返回“ 403 Forbidden”。 foo.php?id=1,2,3,4即使使用很长的ID字符串也可以直接访问,但是这对我来说不是一个选择。 是否有一些我应该调整的Apache或其他设置? 更新:我使用RewriteLogLevel 9打开了RewriteLog。使用短ID字符串,我的日志文件中出现了几行。但是,当id字符串大于255个字符时,不会记录任何内容(似乎mod_rewrite甚至没有执行?)。 如果您觉得这个问题有趣/有帮助,请对其进行投票。

2
Nginx重写将查询字符串转换为路径
我想要这个简单的重写规则: /somefolder/mypage.aspx?myid=4343&tab=overview 重定向到: /folder/4343/overview/ 我在寻找一些解决方案,但没有一个真正起作用。 我试过了: rewrite ^/somefolder/mypage.aspx?myid=(.*)&tab=overview$ /folder/$1/overview permanent; 和 rewrite ^/somefolder/mypage\.aspx\?myid=(.*)&tab=overview$ /folder/$1/overview permanent; 我究竟做错了什么?我要404 (简单的规则就可以了。) 谢谢
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.