# Nginx always searches index.php in the wrong directory

**URL:** <https://www.ruby-forum.com/t/nginx-always-searches-index-php-in-the-wrong-directory/244583>\
**Category:** NGINX\
**Created:** [May 6, 2016, 9:23pm UTC](https://www.ruby-forum.com/t/nginx-always-searches-index-php-in-the-wrong-directory/244583 "2016-05-06T21:23:09Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sadaf\_N](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@Sadaf\_N](https://www.ruby-forum.com/u/Sadaf_N)\
**Post date:** [May 6, 2016, 9:23pm UTC](https://www.ruby-forum.com/t/nginx-always-searches-index-php-in-the-wrong-directory/244583/1 "2016-05-06T21:23:09Z")

</div>

Hello!

I have a web root directory pointing to /var/www/html.

I have several subfolders in /var/www/html where I host different  
projects.  
Example: /var/www/html/chatserver

When I try to access http:// [MYSERVER.net/chatserver](http://MYSERVER.net/chatserver) I always have an  
error  
because Nginx tries to search for the index.php in the root web folder  
instead of the actual subfolder.

This is my default server:

```
server {
listen 80;
listen [::]:80;
server_name MYSERVER.net www.MYSERVER.net;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
listen [::]:443 ssl;
server_name MYSERVER.net www.MYSERVER.net;

ssl_certificate /etc/letsencrypt/live/MYSERVER.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/MYSERVER.net/privkey.pem;
ssl_trusted_certificate

```

/etc/letsencrypt/live/MYSERVER.net/fullchain.pem;  
ssl\_protocols TLSv1 TLSv1.1 TLSv1.2;  
ssl\_prefer\_server\_ciphers on;  
ssl\_dhparam /etc/ssl/certs/dhparam.pem;  
ssl\_ciphers  
‘ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA’;  
ssl\_session\_timeout 1d;  
ssl\_session\_cache shared:SSL:50m;  
ssl\_stapling on;  
ssl\_stapling\_verify on;  
add\_header Strict-Transport-Security max-age=15768000;

```
resolver 8.8.8.8 8.8.4.4;

root /var/www/html;
index index.php index.html index.htm;

rewrite ^(.*\.php)(/)(.*)$ $1?file=/$3 last;

location / {
# try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php?q=$uri&$args;
}

location ^~ /.well-known/ {
allow all;
}

location ~ [^/]\.php(/|$) {
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

```

Any help/ideas on how to solve this?  
Thanks for reading!

Posted at Nginx Forum:

> **[Nginx always searches index.php in the wrong directory](https://forum.nginx.org/read.php?2,266674,266674#msg-266674)**
>
> Hello! I have a web root directory pointing to /var/www/html. I have several subfolders in /var/www/html where I host different projects. Example: /var/www/html/chatserver When I try to access http:// MYSERVER.net/chatserver I always have an error...

---

<div class="post-metadata">

**Author:** ![Issam2204](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/90ced4/32.png) [@Issam2204](https://www.ruby-forum.com/u/Issam2204)\
**Post date:** [May 7, 2016, 11:05am UTC](https://www.ruby-forum.com/t/nginx-always-searches-index-php-in-the-wrong-directory/244583/2 "2016-05-07T11:05:08Z")

</div>

On Fri, May 06, 2016 at 03:22:25PM -0400, Issam2204 wrote:

Hi there,

when I use your configuration and make some guesses about the content  
and requests, it seems to work for me.

That is:

if the directory /var/www/html/chatserver does not exist,  
then /var/www/html/index.php is processed; otherwise  
/var/www/html/chatserver/index.php is processed.

> When I try to access http:// [MYSERVER.net/chatserver](http://MYSERVER.net/chatserver) I always have an error  
> because Nginx tries to search for the index.php in the root web folder  
> instead of the actual subfolder.

What output do you get from

curl -v [http://MYSERVER.net/chatserver](http://MYSERVER.net/chatserver)

? I expect a http 301 with a Location: of  
[https://MYSERVER.net/chatserver](https://MYSERVER.net/chatserver)

Do you get something else?

Then do another “curl -v” with whatever Location: you got.

Eventually you will get one url which shows the problem that you  
report. What is that one url?

With that specific url, it should be possible to work out which  
location{}  
you have told your nginx to use to handle it.

> ```
> rewrite ^(.*\.php)(/)(.*)$ $1?file=/$3 last;
> location / {
> location ^~ /.well-known/ {
> location ~ [^/]\.php(/|$) {
> 
> ```

And from there, it may be more obvious where the problem that can be  
solved is.

Cheers,

## f

Francis D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
