如果使用NGINX服务器在URL包含error 400
符号时,如何防止服务器返回%
代码错误?
我网站的Nginx配置:
....
rewrite ^/download/(.+)$ /download.php?id=$1 last;
....
当我尝试访问此网址时: http://mywebsite.net/download/some-string-100%-for-example 我收到了这个错误:
400 Bad Request
使用此网址: http://mywebsite.net/download/some-string-%25-for-example 它的工作正常!
答案 0 :(得分:0)
这是因为它需要首先进行URL编码。
这将解释: http://www.w3schools.com/tags/ref_urlencode.asp
只能使用ASCII字符集通过Internet发送URL。
由于URL通常包含ASCII集之外的字符,因此必须将URL转换为有效的ASCII格式。
URL编码用“%”后跟两个十六进制数字替换不安全的ASCII字符。 网址不能包含空格。 URL编码通常用加号(+)或%20替换空格。
URL解释器很难看到后面没有十六进制的%
。
从服务器端解决是不可能的。这是客户端的问题。
https://headteacherofgreenfield.wordpress.com/2016/03/23/100-celebrations/
在该网址中,标题为100% Celebrations!
,但固定链接会自动生成为100-celebrations
。这是因为他们知道放置100%
会导致URL编码问题。
如果即使Wordpress没有按照你的方式去做,那你为什么要这样做呢?