为什么我需要在nginx中将$args重定向到index.php?

3
许多PHP框架建议在nginx中添加以下内容:
location / {
    try_files $uri /index.php$is_args$args;
}

要在所有HTTP请求上执行index.php

为什么需要$is_args$args我认为$args已经在HTTP GET请求中了。那么为什么nginx需要以这种方式将它们传递给index.php呢?

1个回答

2
这取决于谁编写了index.php。通常情况下,大量参数从nginx发送到PHP,其中QUERY_STRING和REQUEST_URI是其中之一。
如果程序员访问$_SERVER["QUERY_STRING"],则会收到添加到/index.php末尾的任何内容。
如果程序员访问$_SERVER["REQUEST_URI"],则会收到原始URI以及原始查询字符串,而在try_files语句中添加到/index.php末尾的任何内容都不会影响它。
我托管的两个应用程序(WordPress和MediaWiki)显然使用后者,因为我没有将$is_args$args附加到/index.php上,所有运行良好。
但是另一个应用程序可能会表现不同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接