我想将所有路径传递给index.php?page=path。例如:
domain.com/a/b/c -> index.php?page=a/b/c
因此这是我的 NGINX conf 文件:
location ~ /(?P<arg1>.*)$ {
fastcgi_pass php:9000;
fastcgi_param QUERY_STRING /index.php?page=$arg1;
}
据我所知,查询字符串应该是.com之后的所有内容,对吧?我将 arg1 传递给它。但是,我想忽略真正的文件路径,例如 /file.jpg
或 /images/favicon.ico
。我可以简单地在正则表达式中否定它们,但这样它们就根本没有路径了。
那么如何将 /anything
与 index.php?page=anything
匹配(文件除外)并实际传送这些文件?
最佳答案
您需要使用以下内容
location ~ /(.*)$ {
try_files $uri $uri/ /index.php?page=$1;
}
这将首先检查文件或目录是否存在,如果不存在,则将其传递给 index.php
文件
关于php - NGINX 将路径作为变量发送给 PHP,除非路径是文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49788313/