【发布时间】:2017-02-06 22:30:02
【问题描述】:
许多 PHP 框架建议将其添加到 nginx 中:
location / {
try_files $uri /index.php$is_args$args;
}
对所有 HTTP 请求执行 index.php。
为什么我需要$is_args$args? 我认为$args 已经在HTTP GET 请求中。那么为什么 nginx 需要以这种方式将它们传递给 index.php 呢?
【问题讨论】:
许多 PHP 框架建议将其添加到 nginx 中:
location / {
try_files $uri /index.php$is_args$args;
}
对所有 HTTP 请求执行 index.php。
为什么我需要$is_args$args? 我认为$args 已经在HTTP GET 请求中。那么为什么 nginx 需要以这种方式将它们传递给 index.php 呢?
【问题讨论】:
这取决于谁写了index.php。从nginx向PHP发送大量参数,通常QUERY_STRING和REQUEST_URI在其中。
如果程序员访问$_SERVER["QUERY_STRING"],他们将收到try_files 语句中/index.php 末尾附加的任何内容。
如果程序员访问$_SERVER["REQUEST_URI"],他们将收到原始URI 和原始查询字符串,并且try_files 语句中添加到/index.php 末尾的任何内容都不会影响。
我托管的两个应用程序(WordPress 和 MediaWiki)显然使用后者,因为我没有将 $is_args$args 附加到 /index.php 并且一切正常。
但另一个应用程序的行为可能不同。
【讨论】: