nginx rewrite 问题

t568b 发布于 2012/07/20 17:44
阅读 2K+
收藏 0

nginx rewrite 一个问题,无耐,问google没找到答案,无耐来这里提问了:

url类似:

http://www.a.com/test/ver=1&name=sub&a=5&b=6

将上面的url rewrite成:

http://www.a.com/test.php?ver=1&name=sub&a=5&b=6

rewrite ^/test/(.*)$ /test.php?$1 last;

但事实rewrite之后确有问题:

print_r($_GET);会发现得到的数组是:

array(

'ver' => '1&name=sub&a=5&b=6'

)

也就是说后面的变量没有取到并且当成了第一个变量的值?

请问大侠们谁遇到过这个问题?

加载中
0
t
t568b
发现是参数包含中文的时候是会有这个问题
0
mahone
mahone

rewrite ^/test/(.*)$ /test\.php?$1 last;

这样试试?我乱猜的。。。

0
t
t568b

引用来自“mahone”的答案

rewrite ^/test/(.*)$ /test\.php?$1 last;

这样试试?我乱猜的。。。

不对,后面的点是不需要转义的
0
t
t568b

引用来自“mahone”的答案

rewrite ^/test/(.*)$ /test\.php?$1 last;

这样试试?我乱猜的。。。

兄弟的头像是T-bag,名子是mahone,哈哈
0
泡不烂的凉粉
泡不烂的凉粉

表示没有遇到过。

QUERY_STRING     var=a&test=b

没有出现任何异常。

0
t
t568b

引用来自“看能不能改个名”的答案

表示没有遇到过。

QUERY_STRING     var=a&test=b

没有出现任何异常。

把其中的个参数改成中文,如b=困境&a=5,就会有问题

0
泡不烂的凉粉
泡不烂的凉粉
去读读 html 规范。
0
泡不烂的凉粉
泡不烂的凉粉

引用来自“t568b”的答案

引用来自“看能不能改个名”的答案

表示没有遇到过。

QUERY_STRING     var=a&test=b

没有出现任何异常。

把其中的个参数改成中文,如b=困境&a=5,就会有问题

html不规范,不一定是 nginx的问题。 你编码也肯定不是utf-8
0
t
t568b

引用来自“看能不能改个名”的答案

引用来自“t568b”的答案

引用来自“看能不能改个名”的答案

表示没有遇到过。

QUERY_STRING     var=a&test=b

没有出现任何异常。

把其中的个参数改成中文,如b=困境&a=5,就会有问题

html不规范,不一定是 nginx的问题。 你编码也肯定不是utf-8

url传值跟编码有关系?

nginx rewrite到test.php,确定test.php是utf8编码

test.php的代码:

<?php

print_r($_GET);exit;

得到的get变量就是错的

泡不烂的凉粉
泡不烂的凉粉
html 规范相关的,以及应该注意的,有没有了解过。 我只能帮你提个醒,不是来给你争辩的。ascii编码跟utf-8编码前127个一致,我问的是 传递参数给的中文部分。 url 默认按照utf-8编码发送数据。 你的中文直接传递出来结果会如何, 根据不同浏览器解释会不一样。 我不是跟你争辩的, 我这边测试 nginx 的rewrite没什么问题。如果需要传递多字符编码,最后自己按照规范来。
0
泡不烂的凉粉
泡不烂的凉粉
html 规范相关的,以及应该注意的,有没有了解过。 我只能帮你提个醒,不是来给你争辩的。ascii编码跟utf-8编码前127个一致,“我问的是 传递参数给的中文部分。” url 默认按照utf-8编码发送数据。 你的中文直接传递出来结果会如何, 根据不同浏览器解释会不一样。 我不是跟你争辩的, 我这边测试 nginx 的rewrite没什么问题。如果需要传递多字符编码,最好自己按照规范来
返回顶部
顶部