<div dir="ltr">Hi Francis,<div><br></div><div>Thank you for the response.</div><div><br></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Possibly using "location ^~ /test/" would work?<br>
<br>
<a href="http://nginx.org/r/location" rel="noreferrer" target="_blank">http://nginx.org/r/location</a><br>
<br>
You may want to rewrite to /test.php (with the leading slash), though.<br>
<br>
Although, better might be to just fastcgi_pass directly, rather than<br>
rewriting.<br>
<br>
Something like (untested)<br>
<br>
  location ^~ /test/ {<br>
    fastcgi_param SCRIPT_FILENAME $document_root/test.php;<br>
    fastcgi_param QUERY_STRING q=$uri;<br>
    include fastcgi_params;<br>
    fastcgi_pass <a href="http://127.0.0.1:9000" rel="noreferrer" target="_blank">127.0.0.1:9000</a>;<br>
  }<br>
<br>
although you would want to change the QUERY_STRING line to match what<br>
you need; and you may need to switch the position of the "include",<br>
depending on how your fastcgi server handles repeated params.<span class=""><br></span></blockquote><div><br></div><div>There are over 300 rewrites under 54 location blocks.</div><div><br></div><div>I tried using ^~ as you suggested. Now the rewrite is working correctly, but the files are not executed. The request is returning the actual PHP source file, not the HTML generated by executing the script.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span class="">
> location ~ [^/]\.php(/|$) {<br>
>     fastcgi_split_path_info ^(.+?\.php)(/.*)$;<br>
><br>
>     set $fastcgi_script_name_custom $fastcgi_script_name;<br>
>     if (!-f $document_root$fastcgi_script_name) {<br>
>         set $fastcgi_script_name_custom "/cms/index.php";<br>
>     }<br>
<br>
</span>I suspect that it should be possible to do what you want to do there,<br>
with a "try_files". But I do not know the details.<br></blockquote><div><br></div><div>There is a CMS engine which will intercept all unmatched requests and check the database to see if there is an article with that URI. Some times it has to match existing directories without index.php. If I use try_files, it will either lead to a 403 error (if no index is specified), or would internally redirect the request to the index file (if it is specified), leading to 404 error. The if condition correctly handles all the non-existing files.</div></div></div></div>