Nginx - index.php non interpreté

Hello,

J’ai un petit soucis sur mon serveur nginx, en effet lorsque je veux accéder à la racine de mon site (http://www.monsite.com), le fichier index.php est téléchargé au lieu d’être interprété.
Le nom du fichier téléchargé n’est pas index.php mais “téléchargement”, et il contient bien le contenu du fichier index.php
Par contre le fichier est bien interprété lorsque je le renseigne dans l’url (http://www.monsite.com/index.php).

Voici la conf de mon vhost :

server {
	listen 80;
	listen [::]:80;

	server_name www.monsite.com;

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

	location / {
		try_files $uri $uri/ =404;
	}

	location ~ \.php$ {
		try_files $uri =404;
		fastcgi_index index.php;
		fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
}

J’ai tenté de mettre un index.html à la racine de mon site et de supprimer index.php sur la directive index et ça fonctionne bien en html.

Avez-vous une idée du problème ou une piste pour le corriger ?

En vous remerciant :slight_smile:

Vérifies (je ne connais pas trés bien nginx), mais il me semble que la directive index s’applique aux urls se terminant par /
Donc tu testes l’accés à http://monsite.com/ (avec le / à la fin), et si ça marche, tu normalise avec une redir 301 quand le / manque.

J’ai trouvé comment règler le problème ponctuellement (https://www.digrouz.com/mediawiki/index.php?title=HOWTO_fix_the_trailing_slash_problem_in_Nginx) mais ça sous entend de le faire répertoire par répertoire, il faut trouver la syntaxe pour généraliser ça quand c’est un répertoire.

La requête que j’ai un peu épluchée (pas beaucoup), c’est “nginx trailing slash redirect”.

J’ai fait une erreur dans le résumé de mon problème, en fait je passe par un dossier intermédiaire pour accéder à mon site, du coup l’adresse est sous cette forme : http://www.domaine.com/monsite/

Et du coup je me suis rendu compte que le problème est un peu différent. J’ai placé un index.php à la racine et ça fonctionne (sur http://www.domaine.com/). Par contre si j’accède à l’adresse de mon site (http://www.domaine.com/monsite/) j’ai ce comportement, avec ou sans le “/”.

C’est comme si la directive index ne fonctionnait que pour le dossier racine.

Zut, désolé, je ne connais pas assez bien nginx.
Il y a peut être une erreur dans la syntaxe location ~ .php$ { ?
Perso, je creuserais sur le domaine d’application de mes règles.

J’ai oublié de préciser que j’utilisais un wordpress… À priori ça vient de là car j’ai fait un test en retirant wordpress et en mettant des fichiers php basique à l’intérieur.
J’ai donc rechercher une configuration nginx pour wordpress (à savoir que nginx n’interprète pas les .htaccess) et j’ai trouvé ça https://codex.wordpress.org/Nginx
Mais ceci ne corrige pas mon problème, j’ai du mal à comprendre :confused:
Lorsque je charge :

Donc malheureusement, j’en suis toujours au même point ^^

Sur une installation pur nginx, php / php-fpm, mysql un tutoriel assez complet :

Pour ce qui est du comportement avec le Wordpress dans u nous dossier il y a pléthore de sujet sur la toile qui traite de ce cas, reste à l’adpater a nginx, utilisant du docker je ne pourrais t’en dire plus, ma méthodologie de déploiement n’est pas la même.