许多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
,它都工作得很好。