douwei7976 2018-04-12 05:00
浏览 247
已采纳

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

I want to pass all my path to index.php?page=path. For example:

domain.com/a/b/c -> index.php?page=a/b/c

Therefore this is my NGINX conf file:

location ~ /(?P<arg1>.*)$ {
    fastcgi_pass php:9000;
    fastcgi_param  QUERY_STRING       /index.php?page=$arg1;
}

As far as I know, query string should be everything after .com, right? I'm passing arg1 to it. However, I wanted to ignore truly file paths like /file.jpg or /images/favicon.ico. I could simply negate them in regex but then they'd have no path at all.

So how to match /anything to index.php?page=anything except for files and actually deliver those files?

  • 写回答

4条回答 默认 最新

  • duanchi8836 2018-05-18 06:32
    关注

    You need to use below

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

    This will first check if file or directory exists if not then pass it to the index.php file

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?