Nginx 去除特殊字符
Nginx remove special character
我的URL是: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 ^(.*)\?(.*)$ last;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
rewrite ^(.*)\?(.*)$ last;
include fastcgi.conf;
}
但是没有用。如何去掉“?”来自 URL?
的字符
当您的 URL 是 https://example.com/data=123456
时,data=123456
是 URL 路径 的一部分。当你的 URL 是 https://example.com/?data=123456
时,data=123456
是 URL 的 query 部分,其中查询参数 data
如果 123456
有一个值。至少检查维基百科 article.
接下来,只能通过 $_GET
数组访问查询参数。完整的请求 URI(包括路径和查询部分)可通过 $_SERVER['REQUEST_URI']
获得。您可以在 PHP 脚本中分析该变量并完全跳过重写部分。
如果您想重写您的 URI 并使 data
可以通过 $_GET['data']
变量访问,这也是可能的。但是,您的主要错误是 rewrite
指令仅适用于给定 URL 的(规范化)路径,而不适用于其中的查询部分。尽管如此,它仍可用于附加(或替换)查询参数。为此,您可以使用
rewrite ^(.*/)(data=[^/]*)$ ?;
(仅重写 data
参数)或更通用的
rewrite ^(.*/)([^/=]+=[^/]*)$ ?;
(以 URL 路径后缀的每个 param=value
形式计算)。您可以将此重写规则放在 server
配置级别。
我的URL是: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 ^(.*)\?(.*)$ last;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
rewrite ^(.*)\?(.*)$ last;
include fastcgi.conf;
}
但是没有用。如何去掉“?”来自 URL?
的字符当您的 URL 是 https://example.com/data=123456
时,data=123456
是 URL 路径 的一部分。当你的 URL 是 https://example.com/?data=123456
时,data=123456
是 URL 的 query 部分,其中查询参数 data
如果 123456
有一个值。至少检查维基百科 article.
接下来,只能通过 $_GET
数组访问查询参数。完整的请求 URI(包括路径和查询部分)可通过 $_SERVER['REQUEST_URI']
获得。您可以在 PHP 脚本中分析该变量并完全跳过重写部分。
如果您想重写您的 URI 并使 data
可以通过 $_GET['data']
变量访问,这也是可能的。但是,您的主要错误是 rewrite
指令仅适用于给定 URL 的(规范化)路径,而不适用于其中的查询部分。尽管如此,它仍可用于附加(或替换)查询参数。为此,您可以使用
rewrite ^(.*/)(data=[^/]*)$ ?;
(仅重写 data
参数)或更通用的
rewrite ^(.*/)([^/=]+=[^/]*)$ ?;
(以 URL 路径后缀的每个 param=value
形式计算)。您可以将此重写规则放在 server
配置级别。