Nginx alias et try_files to sous-dossier ne fonctionnent pas

Quand je mets mes fichiers php dans / home / tim_test ça marche bien

Lorsque je mets mes fichiers dans / home / tim_test / hmm, cela ne fonctionne pas. Pourquoi pas?

server { listen 80; root /home; index index.php; location /admin { alias /home/admin/; try_files $uri $uri.html $uri/ /home/admin/; index index.html index.htm index.php; } location /tim_test/ { alias /home/tim_test/; try_files $uri $uri.html $uri/ /home/tim_test/; index index.html index.htm index.php; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 

J’ai essayé de modifier mon fichier pour qu’il ressemble à celui du dossier, mais cela ne fonctionne pas, je reçois 403 interdite lorsque je visite / tim_test dans un navigateur

 location /tim_test/ { alias /home/tim_test/hmm/; try_files $uri $uri.html $uri/ /home/tim_test/hmm/; index index.html index.htm index.php; } 

Je vous remercie! Je suis tellement déconcerté. J’ai essayé plus de 100 redémarrages nginx et différentes choses.

Edit: Si je vais là-bas sur chrome je reçois un 404 non trouvé, je pense que je n’obtenais que le 403 sur Firefox parce que j’ai essayé de visiter le site si souvent. Quoi qu’il en soit, cela ne fonctionne pas.

Il y a un très vieux bogue ouvert sur nginx concernant les directives alias et try_files .

Concernant votre premier fichier de configuration, les deux directives d’ alias sont inutiles, car les deux blocs d’emplacement héritent de la valeur de root et ajoutent la valeur de l’emplacement.

De plus, l’élément final des directives try_files ( /home/admin/ et /home/tim_test/ ) ne sont pas des URI.

Le premier fichier de configuration doit être:

 root /home; location /admin { try_files $uri $uri.html $uri/ /admin/; index index.html index.htm index.php; } location /tim_test/ { try_files $uri $uri.html $uri/ /tim_test/; index index.html index.htm index.php; } 

En ce qui concerne le sous-dossier hmm . À l’exception de l’élément final de la directive try_files (qui est traitée ci-dessus), la configuration semble correcte. Ce qui signifie que le problème peut être lié à l’interaction alias / try_files .

Les alternatives à l’ alias sont des réécritures internes, mais placer l’URI cible dans l’espace de noms de l’URI source rend probablement la solution inutilement difficile.