PHP handling where URI contains a path, index is in root
petecooper
nginx-forum at forum.nginx.org
Wed May 27 13:43:48 UTC 2020
Moshe Katz Wrote:
-------------------------------------------------------
> Your problem is that you are adding an extra question mark.
>
> From the docs:
>
> > $is_args
> > “?” if a request line has arguments, or an empty string otherwise
>
>
> Take the extra question mark out of your try_files line. It should
> look
> like this:
>
> try_files $uri $uri/ /index.php$is_args$args;
Perfect. That was it! Solved.
Thank you very much for your time and assistance, I am most grateful.
Best wishes to you.
Pete
> On Wed, May 27, 2020 at 9:33 AM petecooper
> <nginx-forum at forum.nginx.org>
> wrote:
>
> > Hello.
> >
> > I run a PHP + MySQL content management system on Nginx (1.19.0 at
> time of
> > writing) and an issue has arisen with the way I'm handing PHP files
> in some
> > situations.
> >
> > The issue appears to manifest with queries when they are prepended
> by a
> > path, where a `?` is prepended. If the queries exist in the root
> location,
> > they work as expected.
> >
> > Take the two following URIs, note the second has a `path` set, but
> this
> > does
> > not exist on the filesystem. The CMS might, for example, have a path
> set to
> > 'articles' or 'blog'.:
> >
> > http://subdomain.example.com/?a=b&d=g (No `path`)
> > http://subdomain.example.com/path/?a=b&d=g (With `path`)
> >
> > Running $_GET array gives different results:
> >
> > = No `path` =
> >
> > array (
> > 'a' => 'b',
> > 'd' => 'g',
> > )
> >
> > = With `path` =
> >
> > array (
> > '?a' => 'b',
> > 'd' => 'g',
> > )
> >
> > Note the first key in the 'With `path`' example is wrongly prepended
> with
> > `?`.
> >
> > My Nginx config appears to have been running fine for some time, but
> my
> > instinct says there's either a `location` regex that I'm missing, or
> > something else I've overlooked. I am, unfortunately, not smart
> enough to
> > know what I'm doing wrong.
> >
> > I have included all my `location` blocks for this `server` so as not
> to
> > trigger a conflict from another `location` block, the most relevant
> two are
> > the last and second-to-last in the list.
> >
> > location ^~ /.well-known/ {
> > allow all;
> > default_type "text/plain";
> > root /var/www/sites/example.com/subdomain/_well-known/;
> > try_files $uri $uri/ =404;
> > }
> > location /favicon.ico {
> > access_log off;
> > log_not_found off;
> > }
> > location /robots.txt {
> > access_log off;
> > log_not_found off;
> > }
> > location ~ /\. {
> > deny all;
> > }
> > location ~ \.svg$ {
> > #redeclare `add_header` from parent, with modified
> `style-src` for
> > SVG
> > set $csp_svg_1f173340 '';
> > set $csp_svg_1f173340 '${csp_svg_1f173340}default-src
> \'none\';';
> > set $csp_svg_1f173340 '${csp_svg_1f173340}frame-ancestors
> > \'self\';';
> > set $csp_svg_1f173340 '${csp_svg_1f173340}style-src \'self\'
> > \'unsafe-inline\';';
> > add_header Content-Security-Policy $csp_svg_1f173340;
> > add_header Referrer-Policy strict-origin;
> > add_header Strict-Transport-Security "max-age=31536000;
> > includeSubDomains; preload";
> > add_header X-Content-Type-Options nosniff;
> > add_header X-Frame-Options SAMEORIGIN;
> > add_header X-XSS-Protection "1; mode=block";
> > }
> > location / {
> > index index.html index.php;
> > limit_except GET HEAD POST {
> > deny all;
> > }
> > try_files $uri $uri/ /index.php?$is_args$args;
> > }
> > location ~ ^.+\.php(?:/.*)?$ {
> > fastcgi_hide_header "X-Powered-By";
> > fastcgi_keep_conn on;
> > fastcgi_param SCRIPT_FILENAME
> $document_root$fastcgi_script_name;
> > fastcgi_pass unix:/var/run/php/php-fpm74.sock;
> > fastcgi_split_path_info ^(.+\.php)(/.+)$;
> > include fastcgi_params;
> > try_files $uri =404;
> > }
> >
> > I would be grateful if you're able to have a look and see what I
> might be
> > doing wrong. Any recommendations for further reading, or pointers to
> a
> > 'better' way of handling PHP in this situation are very gratefully
> > received.
> >
> > Thank you in advance, and best wishes to you.
> >
> > Posted at Nginx Forum:
> > https://forum.nginx.org/read.php?2,288165,288165#msg-288165
> >
> > _______________________________________________
> > nginx mailing list
> > nginx at nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx
> >
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
Posted at Nginx Forum: https://forum.nginx.org/read.php?2,288165,288170#msg-288170
More information about the nginx
mailing list