php - NGINX 将路径作为变量发送给 PHP,除非路径是文件路径

标签 php regex nginx

我想将所有路径传递给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。我可以简单地在正则表达式中否定它们,但这样它们就根本没有路径了。

那么如何将 /anythingindex.php?page=anything 匹配(文件除外)并实际传送这些文件?

最佳答案

您需要使用以下内容

location ~ /(.*)$ {
  try_files $uri $uri/ /index.php?page=$1;
}

这将首先检查文件或目录是否存在,如果不存在,则将其传递给 index.php 文件

关于php - NGINX 将路径作为变量发送给 PHP,除非路径是文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49788313/

相关文章:

php - 处理多个并发的大型上传

c# - WPF 文本框中正则表达式的用户输入验证

php - 如何在 PHP 中组合查询字符串

php - 我的 PDO 执行函数出错

php - 样式化 Wordpress 错误页面

c# - 如何搜索包含 2 个特定字符串的所有文件?

javascript - 无法更改跨度内容

linux - Nginx 错误 : unknown directive rewrite

ruby-on-rails - Nginx 无法将请求协议(protocol)正确转发到上游

php - Drupal 在具有用户交互的 block 中显示表数据