我的网址是:https://example.com/data=123456
我在index.php文件中添加了以下代码行:var_dump($_GET['data']);但只有当我加上?字符到URL。(例如:https://example.com/?data=123456)在index.php的根目录下。
我试着把这个添加到nginx.conf文件:
location / {
try_files $uri $uri/ /index.php$is_args$args;
rewrite ^(.*)?(.*)$ $1$2 last;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
rewrite ^(.*)?(.*)$ $1$2 last;
include fastcgi.conf;
}
但不工作。如何去除";"?字符从URL?
当您的URL为https://example.com/data=123456
时,data=123456
是URL路径的一部分. 当你的URL是https://example.com/?data=123456
时,data=123456
是一个查询URL的一部分,其中查询参数data
如果123456
有一个值。至少查一下维基百科的文章。
接下来,只有查询参数可以通过$_GET
数组访问。完整的请求URI(包括路径和查询部分)可以通过$_SERVER['REQUEST_URI']
获得。您可以在PHP脚本中分析该变量,并完全跳过重写部分。
如果您想重写您的URI并使data
可以通过$_GET['data']
变量访问,这也是可能的。然而,你的主要错误是rewrite
指令只适用于给定URL的(规范化)路径,而不是它的查询部分。然而,它可以用来附加(或替换)查询参数。你可以使用
rewrite ^(.*/)(data=[^/]*)$ $1?$2;
(只重写data
参数)或更通用的
rewrite ^(.*/)([^/=]+=[^/]*)$ $1?$2;
(计算URL路径后缀的每个param=value
形式)。您可以将此重写规则放在server
配置级别。