8
votes

Comment réécrire si le fichier n'est pas trouvé à l'aide de nginx

J'utilise NGinx sur Ubuntu Server. J'ai ce Vhost: xxx

Je dois ajouter une règle ...

Si le fichier / dir n'est pas trouvé, utilisez index.php

Comment puis-je modifier ma serveur {} la directive?

Merci!


0 commentaires

4 Réponses :


14
votes

Vous pouvez utiliser la directive Try_Files:

try_files $uri $uri/ /index.php


3 commentaires

Est-il préférable d'utiliser try_files ou réécrire? (lequel est plus vite)


try_files fait spécifiquement ce que vous voulez, alors je dis, c'est mieux.


En fonction des proxy_params, je me retrouve habituellement avec: 224616 # 0: * 96676 Cycle de réécriture de réécriture ou de redirection interne tout en redirigeant de manière interne à "/ etc / nginx / proxy_params", client ... Utilisation: Si (! -E $ -E $ Demande_Filename) {réécriture ^ (. *) $ /index.php dernier; }



2
votes

Vous devez régler le réglage: xxx

espère vous aider


0 commentaires

1
votes

J'ai eu le même problème sur rh6 un EC2 et je l'ai réparé par codage dur le $ document_root , dans le paramètre param fastcgi_param . J'espère que cela a aidé.


0 commentaires

6
votes

ikke est correct, utilisez try_files comme:

location ~ \.php$ {
    try_files $uri /index.php;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;

    include /etc/nginx/fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9001;
}


0 commentaires