Comment définir index.html en tant que root fichier Nginx?
Comment définir index.html pour le nom de domaine par exemple https://www.example.com/ - conduit l'utilisateur à index.html dans le répertoire racine.
J'ai essayé différentes choses comme:
server {
# some configs
location = /{
index index.html;
fastcgi_index index.html;
}
or
location /{
index index.html;
fastcgi_index index.html;
}
}
Rien ne m'a aidé.
Il y a quelques autres configs avec emplacement mot-clé, bien que j'avais commenté, soit.
Autre "lieu" configs dans le server {
clause:
location ~ .*(css|htc|js|bmp|jp?g|gif|ico|cur|png|swf|htm?|html)$ {
access_log off;
root $www_root;
}
location ~ \.php$
{
include /etc/nginx/fastcgi_params;
index index.html;
fastcgi_index index.html;
fastcgi_param SCRIPT_FILENAME $www_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass 127.0.0.1:9000;
# Директива определяет что ответы FastCGI-сервера с кодом больше или равные 400
# перенаправлять на обработку nginx'у с помощью директивы error_page
fastcgi_intercept_errors on;
break;
}
location ~ /\.ht {
deny all;
}
Tous entre eux ont été commentées et sans commentaire, mais rien n'a aidé.
PS Éditions ont été faites dans /etc/nginx/sites-enabled/domainname.com fichier.
Vous devez vous connecter pour publier un commentaire.
dans votre emplacement de bloc que vous pouvez faire:
qui dira ngingx de rechercher un fichier avec le nom exact de la première, et si aucun fichier n'est trouvé, il va essayer uri/index.html. Donc, si une demande de https://www.example.com/ vient, il aurait l'air d'un fichier exact match de premier, et de ne pas trouver ensuite vérifier index.html
$uri $uri/blog/index.html
.try_files $uri $uri/index.html =404;
de secours de 404 au lieu de 500.try_files $uri $uri/index.html =404;
sur un dossier vide et il suffit de renvoyer 404, pas de boucle infinie de mon navigateur côté au moins.location /{
est la plus générale lieu (aveclocation {
). Elle correspond à rien, AFAIU. Je doute qu'il serait utile d'avoirlocation /{ index index.html; }
à cause de beaucoup de contenu dupliqué pour chaque sous-répertoire de votre site.L'approche avec
est mauvais, comme mentionné dans un commentaire ci-dessus, parce qu'elle renvoie
index.html
pour les pages qui ne devraient pas exister sur votre site (tout possible$uri
finira dans que).Aussi, comme mentionné dans la réponse ci-dessus, il y a une redirection interne dans le dernier argument de
try_files
.Votre approche
est également mauvais, depuis
index
fait une redirection interne trop. Dans le cas où vous voulez, vous devez être capable de gérer cela dans unlocation
. Créer par exemplecomme l'a proposé ici. Mais alors vous aurez un lien de travail
http://example.org/index.html
, qui peut ne pas être désirée. Une autre variante que j'utilise, est:P. S. Il est extrêmement facile à debug nginx (si votre binaire permet). Juste ajouter dans le
server {
bloc:et y voir toutes les redirections internes etc.
try_files $uri $uri.html =404;
À faire index.html retour 404, vous pouvez alors:location = /index { return 404; }
location = /index.html { return 404; }
La réponse est à placer à la racine de l'emplacement de directives:
index.html
fonctionne parfaitement. Ce n'est pas grave du tout, c'est juste un nom d'un fichier sur le système de fichiers.Selon la documentation
Vérifie l'existence de fichiers dans l'ordre spécifié et utilise le premier fichier trouvé pour le traitement de la demande; le traitement est effectué dans le contexte actuel. Le chemin d'accès à un fichier est construit à partir du fichier de paramètre en fonction de la racine d'alias et de directives. Il est possible de vérifier le répertoire de l'existence par la spécification d'une barre oblique à la fin d'un nom, par exemple “$uri/”. Si aucun de ces fichiers ont été trouvés, une redirection interne à l'uri spécifié dans le dernier paramètre est faite. Important
Donc, en dernier paramètre, vous devez ajouter votre page ou le code, si les deux premiers paramètres renvoie la valeur false.
Pour moi, le
try_files
directive dans l' (actuellement plus de votes) répondre https://stackoverflow.com/a/11957896/608359 conduit à réécrire cycles,J'ai eu plus de chance avec l'index de la directive. Notez que j'ai utilisé une barre oblique avant le nom, qui pourrait ou pourrait ne pas être ce que vous voulez.
Dans ce cas, je voulais que tous les chemins mènent à /index.html, y compris au moment de retourner une erreur 404.