Nginx supprimer l'extension .php

Default
,

Bonjour,

Voila j'essai de supprimer l'extension .php sur mon nouveau serveur nginx et je n'y arrive pas, quand je me rends sur le lien "monsite.com/exemple" cela me télécharge la page "exemple"

Ce que je fais

J'ai essayé ceci

        location / {
            if ($request_uri ~ ^/(.*)index(\.php)?$) {  return 301 /$1;  }
            if ($request_uri ~ ^/(.*)\.php$) {  return 301 /$1;  }
            try_files $uri $uri.php $uri/ =404;
        }

Conclusion

Si quelqu'un pourrait m'aider ce serait super gentil je pense je dois peut être ajouter quelque chose dans

location @php {
            try_files $uri =404;
            include /etc/nginx/fastcgi_params;
            fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_intercept_errors on;
        }

Mais je ne sais pas quoi.. Ou alors faire en sorte que nginx ne télécharge pas les fichiers sans extension, j'en ai aucune idée j'espère qu'on pourra m'aider ici ! :)

2 Réponse

168528
,

Bonjour, si tu souhaites que ton site n'affiche pas les .php, à ma connaissance il te faut passer par un système de routing, c'est selon moi la manière la plus simple.
Concrètement, tu vas devoir rediriger toutes les requêtes de ton Nginx vers ton index.php, et c'est lui qui va gérer la redirection.

Tu peux utiliser un framework, qui te simplifiera la tâche en te pré-installant un routeur.

17162
,

Bonsoir.
Ton problème, c'est que ta règle pour interpréter le PHP est incorrecte, en voici un exemple.
Par conséquent au lieu d'interpréter le PHP, comme il ne sait pas comment gérer la requête HHTP, il force le téléchargement du fichier.
Sinon, comme te l'a dit Laurent Louis, pour ce qui est de l'url et donc de retirer les extension de fichier dans celle-ci, tu devrais de préférence utiliser un système de routing au niveau de ton application, pour éviter que celle-ci soit dépendente du serveur pour la réécriture et la gestion des url.